gpt4 book ai didi

ios - 取消 Controller 动画转换时,preferredStatusBarStyle 不正确

转载 作者:行者123 更新时间:2023-11-30 10:58:45 26 4
gpt4 key购买 nike

我有一个UITabViewController,它嵌入了一些UIViewControllers。这些 Controller 可能有不同的 preferredStatusBarStyle

我使用 UIViewControllerAnimatedTransitioning+UIPercentDrivenInteractiveTransition 使用 UIScreenEdgePanGestureRecognizer 在 Controller 之间切换。

我注意到,如果我在具有不同 preferredStatusBarStyle 的两个 Controller 之间开始转换,并且取消转换,状态栏样式不会返回到第一个 Controller 首选项,但仍保留为第二个 Controller 首选项。显然,如果我完成转换,或者使用选项卡栏项目在 Controller 之间切换,状态栏样式会正确更改。

我尝试在每个viewWillAppear中调用setNeedsStatusBarAppearanceUpdate(),但状态栏没有改变。

我知道我可以使用 UIApplication.shared.statusBarStyle setter 更改状态栏样式,但此方法现已弃用。

我也尝试更改过渡动画,但问题并没有消失。

奇怪的是,“from” View Controller 的preferredStatusBarStyle,当取消转换时,被设置为正确的值,但显示的却相反!

最佳答案

我找到了解决此问题的方法(虽然并不完美,但可以解决)

在第一个 Controller (“from” Controller )的 viewWillAppear 中,调用此动画。

DispatchQueue.main.async {
UIView.animate(withDuration: duration, delay: delay, options: options, animations: {

self.setNeedsStatusBarAppearanceUpdate()

}, completion: nil)
}

这样,当您取消转换时,您会暂时看到第二个 View Controller 的状态栏,然后状态栏将返回到第一个 Controller 的状态栏。

关于ios - 取消 Controller 动画转换时,preferredStatusBarStyle 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53647240/

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