gpt4 book ai didi

ios - 使用prefersStatusBarHidden而不丢失默认状态栏可见性行为(在垂直紧凑环境中隐藏状态栏)

转载 作者:行者123 更新时间:2023-11-30 12:48:34 33 4
gpt4 key购买 nike

我有 prefersStatusBarHidden 动态返回值,它确实显示/隐藏状态栏,除了一个问题:

prefersStatusBarHidden返回值为false时,无论我们是否处于垂直紧凑的环境中,状态栏都会显示(这不是不使用时的默认行为>prefersStatusBarHidden)。

有什么方法可以使用 prefersStatusBarHidden 仍然能够检测我们是否处于垂直紧凑的环境中并隐藏状态栏。

我当前的代码如下所示:

class SomeViewController: UIViewController {

var someStatusValue = false

override var prefersStatusBarHidden : Bool {
guard (someStatusValue) else { return true }

// Here instead of returning `false`, if we are on VERTICALLY COMPACT ENVIRONMENT return `true` else `false`
return false
}

}

附加:我正在使用基于 UINavigationController 的 View Controller ,并且在 info.plist 中使用基于 View Controller 的状态栏外观:是

最佳答案

我终于明白了

override var prefersStatusBarHidden : Bool {
guard (someStatusValue) else { return true }

if (UIDevice.current.userInterfaceIdiom == .phone && UIDeviceOrientationIsLandscape(UIDevice.current.orientation)) {
return true
} else {
return false
}
}

我还有以下行来注册 viewWillAppear

中的方向更改
NotificationCenter.default.addObserver(self, selector: #selector(orientationChanged(_:)), name: .UIDeviceOrientationDidChange, object: nil)

以及负责接收通知并更新状态栏的函数:

func orientationChanged(_ note: Notification) {
self.setNeedsStatusBarAppearanceUpdate()
}

注意:您必须 NotificationCenter.default.removeObserver 才能在 viewWillDisappear 中取消注册方向通知

关于ios - 使用prefersStatusBarHidden而不丢失默认状态栏可见性行为(在垂直紧凑环境中隐藏状态栏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41306146/

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