ios - 如何以编程方式更改 statusBarStyle?
问题描述
我正在为 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 中没有导航栏或标签栏。
解决方案
- 在 iOS 13 中,我们不允许这样做,但总是有逃生根.. 我用过
self.navigationController?.navigationBar.barStyle = .black
使状态栏变黑并且有效
您可以根据需要使用各种选项代替黑色(.default、.blackTranslucent、.blackOpaque)代替 .black
推荐阅读
- javascript - 如果使用 preventdefault 正则表达式不匹配,jQuery 会阻止用户输入
- python - Django - 使用属性作为外键
- xmpp - xmlrpc 收到错误 xmpp 用户注册
- php - 为什么使用 API 在 Vimeo 上上传视频后重定向不起作用?
- sql - SQL 字符串未得到评估 PostgreSQL
- angular - 如何安装最新的 is-callable 版本 1.1.5?
- sql - 如何在 Excel 中的 SQL Server 表中插入重复行?
- docker - 我想在正在运行的 docker 容器中使用 docker sdk,并想在运行的 docker 容器中构建 docker 映像并将其部署在 minikube 中
- react-native - 使用axios配合reactjs调用asp.net api localhost
- angularjs - 即使页面正在加载,控制台也会出现 404 错误