let tabBarTitleOffset = UIOffsetMake(0,50)
for controller in tabBarController.viewControllers? {
controller.tabBarItem.titlePositionAdjustment = tabBarTitleOffset
}
您可能还注意到我对 NSLocalizedString 的调用缺少一个参数 . 's because I tend to use the same string for the comment as the resource string. So I' ve创建了一个全局函数来简化调用而不重复字符串 .
6 回答
正如其他人所建议的那样,您可以转到Interface Builder并删除Bar Item上的Title,也可以以编程方式执行 .
只要您没有为选项卡链接到的UIViewController设置title属性,这就足够了 . 如果要为视图控制器设置 Headers 并避免显示为条形项 Headers ,请使用
navigationItem.title = "My Title"
而不是title = "My Title"
.在
Xcode
上转到故事板,然后单击设置图标的导航控制器 . 单击navigationController底部的tabBarItem
. 在左侧转到属性检查器并删除barItem Headers .您也可以以编程方式执行此操作,即使您的故事板仍然不同 .
标签可以在
UITabBarItem
上配置 Headers ,该 Headers 由选项卡中根视图控制器的 Headers 覆盖 . 所以我想你在BookingViewController中设置title = "Booking"
.我没有明确隐藏标签 Headers 的API,但你可以通过基本上将它们移出屏幕来隐藏它们:
然后您的图标可能会显得有点高,您也可以通过设置
tabBarItem.imageInsets
进行调整以进行补偿 .我创建一个
UITabBarItem
的子类,限制设置title
,如下所示:然后使用您的自定义类初始化视图控制器的
tabBarItem
:你可以试试这个 .
在您不想要 Headers 的视图控制器中添加此项
我最近遇到了这个问题,并认为我会发布我自己的解决方案,为后代,因为我认为它非常轻,有些人可能更喜欢它 .
首先,你创建你的标签项(我的是我将子控制器传递给的
UITabBarController
子类) - 将标签项 Headers 设置为空字符串 .(当然,此解决方案也特定于OP场景,其中您有一个带有嵌入式Nav控制器的
TabbarController
- 这是相对常见的) .您可能知道,设置UIViewController的 Headers 将导致相关标签项获取 Headers .
为了拥有UIViewController Headers 而不设置Tab项 Headers - 将新的UILabel添加到视图控制器的导航项 Title View .
我最终在_962085上创建了一个扩展名,如下所示:
根据需要自定义字体和颜色 . 让标签大小本身,这样你就不必测量它或在这里设置它的框架 .
我也更喜欢使用本地化字符串而不是直接设置字符串 .
现在,在任何标签子控制器中,为了设置我的视图控制器 Headers 而不拿起标签项目 Headers - 我只需要调用
addNavItemTitle(resourceString: "example.title")
一个好地方是
viewDidLoad
您可能还注意到我对
NSLocalizedString
的调用缺少一个参数 . 's because I tend to use the same string for the comment as the resource string. So I' ve创建了一个全局函数来简化调用而不重复字符串 .像这样: