gpt4 book ai didi

ios - 状态栏在 iPhone X 中没有动画

转载 作者:行者123 更新时间:2023-11-28 07:37:39 24 4
gpt4 key购买 nike

我正在使用 XCode 10 和 iOS 11 开发 iPhone 应用。

当从一个场景移动到另一个场景时,我试图让状态栏在屏幕外显示动画。

在我的第一个 View Controller (TableViewController) 中,我声明:

var isStatusBarHidden = false

然后我添加以下内容:

override var prefersStatusBarHidden: Bool {
return isStatusBarHidden
}

override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return .slide
}

然后在prepare方法中:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "resultSegue" {
...

isStatusBarHidden = true
UIView.animate(withDuration: 0.5, animations: {
self.setNeedsStatusBarAppearanceUpdate()
})
}
}

在第二个 View Controller (ViewController)中我有

var isStatusBarHidden = true

override var prefersStatusBarHidden: Bool {
return true
}

动画在 iPhone 8 上运行良好。但是,在 iPhone X 上,即使状态栏出现和消失,它也没有动画。

我怎样才能在 iPhone X 上也出现动画?

最佳答案

只要我没有在 UINavigationController 中嵌入第一个 View Controller ,我就可以让您的代码正常工作。

如果您的第一个 View Controller 位于 UINavigationController 中:创建一个子类,f.ex CustomNavigationController:

class CustomNavigationController: UINavigationController {

var isStatusBarHidden: Bool = false

override var prefersStatusBarHidden: Bool {
return isStatusBarHidden
}

override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return .slide
}

}

然后在第一个 View Controller 的 prepare for segue 方法中:

if let navigationController = navigationController as? CustomNavigationController {
navigationController.isStatusBarHidden = true
UIView.animate(withDuration: 0.5, animations: {
self.setNeedsStatusBarAppearanceUpdate()
})
}

正如您在第二个 View Controller 中所做的那样:

override var prefersStatusBarHidden: Bool {
return true
}

然后它在 iPhone X 上为我制作了精美的动画。

关于ios - 状态栏在 iPhone X 中没有动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52993569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com