【发布时间】:2011-07-31 08:37:20
【问题描述】:
如何改变UITabBarItem的宽度?
我有一个带有标题的项目,它比默认项目宽度宽。我该如何解决?
【问题讨论】:
标签: objective-c xcode width uitabbaritem
如何改变UITabBarItem的宽度?
我有一个带有标题的项目,它比默认项目宽度宽。我该如何解决?
【问题讨论】:
标签: objective-c xcode width uitabbaritem
iOS7 及更高版本的解决方案:
为 UITabBar 引入了一个新属性:itemWidth。
将 itemWidth 设置为正值以用作选项卡的宽度 当它们被定位为居中组时的条形项目(而不是 填充标签栏)。默认值为 0 或小于 0 的值将 解释为系统定义的宽度。
@property(nonatomic) CGFloat itemWidth NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR;
因此您可以在 AppDelegate 中执行此操作:
[[UITabBar appearance] setItemWidth:WIDTH];
如果要填满整个UITabBar:
[[UITabBar appearance] setItemWidth:self.window.frame.size.width/NUMBER_OF_ITEMS];
【讨论】:
您可以通过继承 UITabBar 并覆盖其 layoutSubviews 方法来更改标签栏项目的间距(和宽度)。您将在 self.subViews 数组中找到所有选项卡栏按钮。它们的类是非公共的 UITabBarButton 但它们从 UIControl 继承,因此您可以识别所有选项卡栏按钮,检查它们是否属于 UIControl 类。那么你只需要改变标签栏按钮的框架。
【讨论】:
UITabBar 子类分配给UITabBarController?
我刚刚搜索了文档,并没有看到调整 UITabBarItem 宽度的方法。
一种可能的解决方案是在标签栏控制器中放置一个视图来加载自定义的 UITabBarItem,这是适当的宽度。
【讨论】:
如果您将 UITabBarController 子类化,则可以找到更简单的 swift 解决方案 这将均匀地自动填充标签栏项目
self.tabBar.itemPositioning = .fill
【讨论】:
斯威夫特 5
UITabBar().itemWidth = self.window!.frame.size.width/5
【讨论】: