Swift 是否在AppDelegate中设置状态栏?
以前,我有这个代码,它在Swift更新之前工作得很好。现在它说: iOS 9.0中不推荐使用“statusBarStyle”的Setter:Use-[UIViewController preferredStatusBarStyle] 现在,我了解到您必须覆盖Swift 是否在AppDelegate中设置状态栏?,swift,xcode,statusbar,appdelegate,Swift,Xcode,Statusbar,Appdelegate,以前,我有这个代码,它在Swift更新之前工作得很好。现在它说: iOS 9.0中不推荐使用“statusBarStyle”的Setter:Use-[UIViewController preferredStatusBarStyle] 现在,我了解到您必须覆盖statusBarStyle,但我不想在每个UIViewController中手动执行此操作,而是通过UIApplication的结构和扩展来控制它。但我不知道该怎么做 代码: extension UIApplication { va
statusBarStyle
,但我不想在每个UIViewController
中手动执行此操作,而是通过UIApplication
的结构和扩展来控制它。但我不知道该怎么做
代码:
extension UIApplication {
var statusBarView: UIView? {
return value(forKey: "statusBar") as? UIView
}
}
struct StatusBar {
static func setStatusBar() {
let appDelegate = UIApplication.shared.delegate as? AppDelegate
if let currentVC = appDelegate?.window?.rootViewController?.getCurrentlyDisplayedVC() {
if currentVC is LoginVC || currentVC is SignUpVC || currentVC is SignUpVC {
UIApplication.shared.statusBarView?.backgroundColor = .clear
}
else {
UIApplication.shared.statusBarView?.backgroundColor = Colors.mainBlueColor
}
}
UIApplication.shared.statusBarStyle = .lightContent
}
}
extension UIViewController {
func getCurrentlyDisplayedVC() -> UIViewController {
if let presentedVC = presentedViewController {
return presentedVC.getCurrentlyDisplayedVC()
}
else if let split = self as? UISplitViewController, let last = split.viewControllers.last {
return last.getCurrentlyDisplayedVC()
}
else if let nav = self as? UINavigationController, let top = nav.topViewController {
return top.getCurrentlyDisplayedVC()
}
else if let tab = self as? UITabBarController {
if let selected = tab.selectedViewController {
return selected.getCurrentlyDisplayedVC()
}
}
return self
}
}