UITabBar 并没有暴露 titleLabel 给我们。我们需要通过KVC 获取,然后修改其属性。
let viewTabBar = item.value(forKey: "view") as? UIView
// let imageView = viewTabBar?.subviews[0] as? UIImageView
let label = viewTabBar?.subviews[1,true] as? UILabel
label?.numberOfLines = 2
label?.textAlignment = .center
label?.lineBreakMode = .byWordWrapping
label?.frame = CGRectMake(0, 0, (viewTabBar?.frame.size.width ?? 0),10)
label?.sizeToFit()
修改行数后,会影响原来的布局,需要自己调整图片的显示。
调整图片和文字的偏移
// 调整文字偏移
item.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -20)
// 调整图片偏移
item.imageInsets = UIEdgeInsets(top: 0.0, left: 0, bottom: 0, right: 0)
需要注意的是, imageInsets 的调整必须在let viewTabBar = item.value(forKey: "view") as? UIView
的前面。因为一旦设置 imageInsets
, itme
里的view
就变化了,之前的设置就没有意义了
网友评论