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?
Found easier solution for swift if you subclass the UITabBarController this will autofill the tab bar items evenly
self.tabBar.itemPositioning = .fill
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.
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];
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With