我曾经使用以下代码来调整我的选项卡栏的高度。然而,在我升级到Xcode 11并且使用swift 5后,UI不再正确显示。
class MyTabBarController: UITabBarController {
private lazy var defaultTabBarHeight = { [unowned self] in
return self.tabBar.frame.size.height
}()
let higherTabBarInset: CGFloat = 24
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
let newTabBarHeight = defaultTabBarHeight + higherTabBarInset
var newFrame = tabBar.frame
newFrame.size.height = newTabBarHeight
newFrame.origin.y = view.frame.size.height - newTabBarHeight
tabBar.items?.forEach({e in
e.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -(higherTabBarInset / 2))
})
}
}
它应该像这样出现,选项卡栏的高度为72:
然而,使用Xcode 11在iOS 12中的效果是这样的,选项卡栏高度恢复到默认的49: 在iOS 13中,即使我的应用程序仅设置为纵向布局且目标设备仅为iPhone,它也会显示为.inlineLayoutAppearance
。我的自定义字体也会回到系统默认字体。与iOS 12一样,UITabBar的高度也会恢复默认值49:
我参考了这个类似的问题,但是那个解决方案对我不起作用,而且看起来也不像一个正确的解决方案。另外一件我不理解的事情是,当我尝试使用以下代码设置UITabBarItem的外观时:
tabBar.items?.forEach({e in
if #available(iOS 13.0, *) {
let appearance = UITabBarItemAppearance()
appearance.configureWithDefault(for: .stacked)
e.standardAppearance = appearance
}
})
我收到了一个错误,提示“无法将类型 'UITabBarItemAppearance' 分配给类型 'UITabBarAppearance?'”。然后我发现,即使我的迭代变量“e”的类型是“UITabBarItem”,它的外观类型也是“UITabBarAppearance?”... 我找不到一种方法来设置我的UITabBarItem的外观,这真的很令人困惑...
有人知道这是否有合理的原因,或者这是可能的错误吗?感谢任何答案。