将 Swift 5 中的 tabBar 高度更改为 IOS 13
Change tabBar height in Swift 5 for IOS 13
我需要将 UITabBar
高度更改为 95。我可以在 iOS Swift 的旧版本中做到这一点。这是我在旧版本中工作的代码。
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
tabBar.frame.size.height = 95
tabBar.frame.origin.y = view.frame.height - 95
menuButton.frame.origin.y = self.view.bounds.height - tabBar.frame.size.height - 10
shadowBtn.frame.origin.y = self.view.bounds.height - tabBar.frame.size.height - 15
}
在 viewDidLayoutSubviews
中尝试
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
tabBar.frame.size.height = 95
tabBar.frame.origin.y = view.frame.height - 95
}
我正在使用以下方法
extension UIWindow {
static var key: UIWindow? {
if #available(iOS 13, *) {
return UIApplication.shared.windows.first { [=10=].isKeyWindow }
} else {
return UIApplication.shared.keyWindow
}
}
}
extension UITabBar {
override open func sizeThatFits(_ size: CGSize) -> CGSize {
super.sizeThatFits(size)
guard let window = UIWindow.key else {
return super.sizeThatFits(size)
}
var sizeThatFits = super.sizeThatFits(size)
sizeThatFits.height = window.safeAreaInsets.bottom + <# Height #>
return sizeThatFits
}
}
或者,如果您不喜欢创建扩展,请创建 UITabBar 子类,然后覆盖此方法。
当您使用 viewWillLayoutSubviews
和 viewDidLayoutSubviews
更改标签栏的高度时,您忘记了安全区域。您将必须通过 self.additionalSafeAreaInsets
设置额外的安全区域插入,并且在 viewDidLayoutSubviews
和 viewWillLayoutSubview
中这样做,标签栏将向上移动(因为您已经添加了额外的插入)。如果您不关心自动布局和安全区域,那么您可以使用 viewWillLayoutSubviews
和 viewDidLayoutSubviews
我需要将 UITabBar
高度更改为 95。我可以在 iOS Swift 的旧版本中做到这一点。这是我在旧版本中工作的代码。
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
tabBar.frame.size.height = 95
tabBar.frame.origin.y = view.frame.height - 95
menuButton.frame.origin.y = self.view.bounds.height - tabBar.frame.size.height - 10
shadowBtn.frame.origin.y = self.view.bounds.height - tabBar.frame.size.height - 15
}
在 viewDidLayoutSubviews
中尝试override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
tabBar.frame.size.height = 95
tabBar.frame.origin.y = view.frame.height - 95
}
我正在使用以下方法
extension UIWindow {
static var key: UIWindow? {
if #available(iOS 13, *) {
return UIApplication.shared.windows.first { [=10=].isKeyWindow }
} else {
return UIApplication.shared.keyWindow
}
}
}
extension UITabBar {
override open func sizeThatFits(_ size: CGSize) -> CGSize {
super.sizeThatFits(size)
guard let window = UIWindow.key else {
return super.sizeThatFits(size)
}
var sizeThatFits = super.sizeThatFits(size)
sizeThatFits.height = window.safeAreaInsets.bottom + <# Height #>
return sizeThatFits
}
}
或者,如果您不喜欢创建扩展,请创建 UITabBar 子类,然后覆盖此方法。
当您使用 viewWillLayoutSubviews
和 viewDidLayoutSubviews
更改标签栏的高度时,您忘记了安全区域。您将必须通过 self.additionalSafeAreaInsets
设置额外的安全区域插入,并且在 viewDidLayoutSubviews
和 viewWillLayoutSubview
中这样做,标签栏将向上移动(因为您已经添加了额外的插入)。如果您不关心自动布局和安全区域,那么您可以使用 viewWillLayoutSubviews
和 viewDidLayoutSubviews