简体   繁体   中英

How to change the width of UITabBarItem?

How to change the width of UITabBarItem?

I have an item with the title, that is wider than default item width. How can I fix it?

Solution for iOS7 and greater versions:

A new property has been introduced for UITabBar: itemWidth .

Set the itemWidth to a positive value to be used as the width for tab bar items when they are positioned as a centered group (as opposed to filling the tab bar). Default of 0 or values less than 0 will be interpreted as a system-defined width.

@property(nonatomic) CGFloat itemWidth NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR;

So you can do this in your AppDelegate:

[[UITabBar appearance] setItemWidth:WIDTH];

If you want to fill the whole UITabBar:

[[UITabBar appearance] setItemWidth:self.window.frame.size.width/NUMBER_OF_ITEMS];

如何填写UITabBar

You can change the spacing (and width) of the tab bar items by subclassing UITabBar and overriding its layoutSubviews method. You will find all tab bar buttons in the self.subViews array. Their class is the non-public UITabBarButton but they inherit from UIControl so you can identify all tab bar buttons checking if they are kind of UIControl class. Then all you need is to change the frame of the tab bar buttons.

I just searched through the documentation and saw no method for adjusting the UITabBarItem's width.

A possible solution would be to place a view within the tab bar controller to load a custom UITabBarItem, that is the proper width.

如果您将UITabBarController子类化,则会为swift找到更简单的解决方案,这将自动填充标签栏项目

self.tabBar.itemPositioning = .fill

斯威夫特5

UITabBar().itemWidth = self.window!.frame.size.width/5

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM