在iOS11中,Tabbar图标会由上下排列变成左右排列,要保持以前那种上下排列的样式,可以通过重写traitCollection实现
extension UITabBar {
//让图片和文字在iOS11下仍然保持上下排列
override open var traitCollection: UITraitCollection {
if UIDevice.current.userInterfaceIdiom == .pad {
return UITraitCollection(horizontalSizeClass: .compact)
}
return super.traitCollection
}
}
但是这样会有个问题,嵌套在tabBåar中的Navigation会被改变,导致barButtonItem和title消失,因此可以再重写Navigation的traitCollection来恢复
extension UINavigationController {
static var savetraitCollection: UITraitCollection?
open override var traitCollection: UITraitCollection {
if UINavigationController.savetraitCollection == nil {
UINavigationController.savetraitCollection = super.traitCollection
}
return UINavigationController.savetraitCollection ?? super.traitCollection
}
}