【发布时间】:2019-11-30 05:22:04
【问题描述】:
我正在为 iOS13 构建一个应用程序。我想根据用户可以选择的配色方案更改状态栏的文本颜色。似乎无法直接更改状态栏的文本颜色,所以我尝试更改 statusBarStyle。
首先我尝试:
var myStatusBarStyle = UIStatusBarStyle.default { didSet { setNeedsStatusBarAppearanceUpdate() } }
override var preferredStatusBarStyle : UIStatusBarStyle { return myStatusBarStyle; }
但它不起作用。
那我试试:
UIApplication.shared.statusBarStyle = myStatusBarStyle;
它确实完成了工作!但 Xcode 给出警告:“‘statusBarStyle’在 iOS 13.0 中已弃用:使用已安装的窗口场景的 statusBarManager 属性。”
所以,在 sceneWillEnterForeground(_ scene: UIScene) 我尝试:
guard let ws = (scene as? UIWindowScene) else { return }
if let t = ws.statusBarManager { print(t.statusBarStyle) }
很遗憾,t.statusBarStyle 是只读的。
现在,我该怎么办? ps:我在 Main.storyboard 中没有 Navigation Bar 或 Tab Bar。
【问题讨论】:
-
你覆盖
preferredStatusBarStyle的视图控制器是否是另一个视图控制器的子视图控制器?如果是这样,那么您需要在 parent 视图控制器中覆盖preferredStatusBarStyle(或者更确切地说,是“根”中的那个——没有父视图的那个)。 -
我只有一个 ViewController。 (并且我可以通过以下语句更改状态栏的背景颜色:self.view.backgroundColor=myColor;)
-
在您的 info.plist 中,您是否将
View controller-based status bar appearance设置为YES? -
是的,我已经设置为YES了。