隐藏标签栏时的白色状态栏

时间:2017-11-06 11:48:48

标签: ios swift uitabbarcontroller

我有一个自定义UITabBarController,当我按下某个按钮时,很久以前我发现这个代码到动画隐藏标签栏。这一点非常有效,直到升级到 iOS 11 ,现在状态栏在隐藏标签栏时变为白色。

我无法弄清楚发生了什么。就像 Y 视图位置增加20点,位于状态栏和代码下方:

enter image description here

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()
        }
    }

}

1 个答案:

答案 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