override func viewWillLayoutSubviews() {
// acess to list of tab bar items
if let items = self.tabBar.items {
// in each item we have a view where we find 2 subviews imageview and label
// in this example i would like to change
// access to item view
let viewTabBar = items[2].value(forKey: "view") as? UIView
// access to item subviews : imageview and label
if viewTabBar.subviews.count == 2 {
let label = viewTabBar?.subviews[1]as? UILabel
// here is the customization for my label 2 lines
label?.numberOfLines = 2
label?.textAlignment = .center
label!.text = "tab_point".localized
// here customisation for image insets top and bottom
items[2].imageInsets = UIEdgeInsets(top: 8, left: 0, bottom: -5, right: 0)
}
}
}
5条答案
按热度按时间e4yzc0pl1#
现在它包含了两个子视图。在0处是imageView,在1处是label。现在把
imageview
的高度调小一点,这样你就可以把label的高度调大一点,以便有多行。通过代码把label的属性ofnumberoflines
设置为0。现在来玩这个标签。
hi3rlvi22#
更稳定的解决方案:
7ivaypg93#
这是我解决方案
我们需要在viewwillLayoutSubviews内部实现此功能。以更新用户界面并使其正常工作
在这个例子中,在去定制我的第三个标签栏项目只
这是结果
kxxlusnw4#
您不能对
UIBarButtonItem
执行此操作,因为它不具有与UINavigationItem
类似titleView
属性!您只能将字符串设置为标题和选项卡图像!就是这样!
如果您可以选择将标签设置为选项卡项的标题视图,那么您可以将标签的数字设置为0,但在这里您只能设置字符串!
jgzswidk5#