我有一个自定义UITabBarController
,当我按下某个按钮时,很久以前我发现这个代码到动画隐藏标签栏。这一点非常有效,直到升级到 iOS 11 ,现在状态栏在隐藏标签栏时变为白色。
我无法弄清楚发生了什么。就像 Y 视图位置增加20点,位于状态栏和代码下方:
extension CustomTabBarController {
func showTabBar(_ notification: Foundation.Notification) {
setTabBarVisible(true, animated: true)
}
func hideTabBar(_ notification: Foundation.Notification) {
setTabBarVisible(false, animated: true)
}
fileprivate func setTabBarVisible(_ visible: Bool, animated: Bool) {
let frame = tabBar.frame
let height = frame.size.height
let offsetY = (visible ? -height : height)
let duration: TimeInterval = (animated ? 0.3 : 0.0)
UIView.animate(withDuration: duration) {
self.tabBar.frame = frame.offsetBy(dx: 0, dy: offsetY)
self.view.frame = CGRect(x: 0.0, y: 0.0, width: self.view.frame.width, height: self.view.frame.height + offsetY)
self.view.setNeedsDisplay()
self.view.layoutIfNeeded()
}
}
}
答案 0 :(得分:1)
我在iPhone 6s Plus上发现了同样的问题。我最初运行的是iOS 11.0.2,它似乎运行正常。更新到iOS 11.1.2后,它有问题。这让我相信它是在11.1之后引入的。
解决方案:删除此行似乎可以为我提供我期望的结果。
self.view.frame = CGRect(x: 0.0, y: 0.0, width: self.view.frame.width, height: self.view.frame.height + offsetY)
希望这有帮助
- Amir