UITabBar显示两行文字。

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的前面。因为一旦设置 imageInsetsitme里的view 就变化了,之前的设置就没有意义了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • UI Basic Note UIView的常用方法 获取父/子控件@property(nonatomic,read...
    马文涛阅读 1,773评论 3 16
  • 对于iOS13适配汇总以及遇到的问题注意:以下适配内容,必须适配的会以"必须"标出 1. Dark Model(必...
    HF_K阅读 1,502评论 0 4
  • 不属于使用SDWebImage步骤的是 A:下载SDWebImage的最新SDK B:把SDK导入工程中Backg...
    Atong_ce9e阅读 371评论 0 0
  • UiView的一些代理 一.<NSCoding> 我们会在以下这些场合用到NSCoding: 1. XIB/Sto...
    爱笑的猫mi阅读 1,192评论 0 1
  • 1. 书籍《Objective-C编程全解》 [知识点] 面向对象编程的概念 类和继承 对象的类型和动态绑定 内存...
    vikimemory阅读 697评论 0 1