【发布时间】:2019-09-24 07:10:16
【问题描述】:
我一直在开发一个 iOS 应用程序,在 iOS 13 之前,它能够在出现弹出窗口时“变暗”状态栏。这只需添加一个带有边界的视图作为状态栏并应用0.5 alpha:
lazy var fadeStatusBar: UIView = {
let fadeStatusBar = UIView(frame: UIApplication.shared.statusBarView?.frame ?? UIApplication.shared.statusBarFrame)
fadeStatusBar.backgroundColor = UIColor.black
fadeStatusBar.alpha = 0
fadeStatusBar.translatesAutoresizingMaskIntoConstraints = false
return fadeStatusBar
}()
statusBarView 是 UIApplication 的扩展:
extension UIApplication {
var statusBarView: UIView? {
if #available(iOS 13.0, *) {
let tag = 38482458385
if let statusBar = self.keyWindow?.viewWithTag(tag) {
return statusBar
} else {
let statusBarView = UIView(frame: UIApplication.shared.statusBarFrame)
statusBarView.tag = tag
self.keyWindow?.addSubview(statusBarView)
return statusBarView
}
} else {
if responds(to: Selector(("statusBar"))) {
return value(forKey: "statusBar") as? UIView
}
}
return nil
}
}
然后我可以将fadeStatusBar alpha 属性设置为0.5。但是,这在 iOS 13 中不再起作用。我只是想知道它是否仍然可以完成,因为我在 another thread 中读到原生 iOS 应用程序也删除了此功能:
状态栏由系统进程渲染(在应用程序外) 过程)在 iOS 13 上,因此应用无法更改此设置。 (来源:在 WWDC 2019 实验室与 UIKit 工程师交谈。)
您可以在 Apple Books 应用中看到这一点,该应用用于使状态变暗 栏在 iOS 12 上处于黑暗模式,但在 iOS 13 上不会发生。
不过,我的问题与上面提到的问题不同,因为那里的问题是编辑状态栏本身的 alpha,而我很乐意使用覆盖视图。任何实现预期结果的建议将不胜感激。
【问题讨论】:
标签: ios swift statusbar ios13 uiapplication