在iOS11中,Tabbar圖標會由上下排列變成左右排列,要保持以前那種上下排列的樣式,可以通過重寫traitCollection實現(xiàn)
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
}
}