ipad UITabBarItem的图标横排变成竖排

标签栏(UITabBar)在项目开发中经常会用到,它里面的每一个标签项(UITabBarItem)都可以设置不同的图片和标题文字。过去不管我们使用 iPad 还是 iPhone 运行程序,图片和文字都是垂直排列的(图标在上,文字在下)

而当系统更新到了 iOS11 以上时,图片和文字在 iPad 下就变成了左右排列(iPhone 下仍然是上下排列)。

iPad 下的这种左右排列方式是 iOS11 的新特性,如果想要改回上下排列的话可以通过重写 UITabBar 的 traitCollection 方法来实现。

swift下修改方法

扩展 UITabBar

(1)如果想让项目中所有的 tabbar 都改成垂直排列图标和文字,可以直接对 UITabBar 进行扩展,重写其 traitCollection 方法。

  extension UITabBar {
      //让图片和文字在iOS11下仍然保持上下排列
      override open var traitCollection: UITraitCollection {
          if UIDevice.current.userInterfaceIdiom == .pad {
              return UITraitCollection(horizontalSizeClass: .compact)
          }
          return super.traitCollection
      }
  }

OC中重写TraitColletion方法
重写traitCollection方法,使UITabbar保持图为垂直排列,防止在ipad11出现水平排列

自定义TabBar

- (UITraitCollection *)traitCollection {

    if (UIDevice.currentDevice.userInterfaceIdiom ==  UIUserInterfaceIdiomPad) {

        return [UITraitCollection traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassCompact];

    }

    return [super traitCollection];

}

修改完毕之后:

然后就完成了

发布了82 篇原创文章 · 获赞 93 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/sun_cui_hua/article/details/103458727