2017-09-14 108 views
0

我已经尝试了很多事情,但不可能找到一种方法来将customNumber的lineNumber标记为UITabBarItem.0(我想在两行中获得标题)。UITabBarItem标签中的多行

有没有办法做到这一点?

+1

@ chirag90这是关于一个导航栏的标题,而不是一个标签栏项目的冠军。 – the4kman

+0

你想在UITabBarItem标签它的意思是你也希望它的触摸事件(我猜)?那么你可以直接使用多行的UIButton。 –

+0

“标题标签”未公开...您几乎可以肯定需要使用自定义标签栏。 – DonMag

回答

2

现在它包含两个子视图。在0处它是imageView,在1处它是标签。 现在让imageview的高度稍微小一些,这样就可以让标签的高度稍大一些,以便有多条线。通过代码将标签的numberoflines的设置为0。

 let viewTabBar = tabBarItem.value(forKey: "view") as? UIView 
    let imageView = viewTabBar?.subviews[0] as? UIImageView 
    let label = viewTabBar?.subviews[1] as? UILabel 

现在玩这个标签。

+1

你应该得到一个奖章;)我很确定你的答案将帮助吨人! –

+0

嘿感谢的人.....它感觉很好回​​答这样的问题 – Arnav

+1

请注意,如果你没有图像,UILabel的索引将为0,我已经发布了更多的通用解决方案下面 – eXhausted

0

你不能这样做UIBarButtonItem,因为它没有财产titleViewUINavigationItem

您只能将字符串设置为标题和标签图像!而已!

如果您可以选择将标签设置为tabbaritem的titleview,那么您可以使用numberofline 0获取标签,但在此您只能设置字符串!

1

更稳定的解决方案:

guard let view = tabBarItem?.value(forKey: "view") as? UIView, 
     let label = (view.subviews.flatMap{ $0 as? UILabel }).first, 
     let imageView = (view.subviews.flatMap{ $0 as? UIImageView }).first else { return }