在开发iOS App时,很多应用都要根据当前App内容颜色来设置iOS系统状态栏的配色,黑色或者白色——尤其是在iOS 13系统支持了黑色模式后。
平时,别人会告诉你这么做:
UIApplication.shared.statusBarStyle = .default
但这会触发警告: 不推荐使用 在 iOS 版 9 。 那么有没有其他办法呢? 有,官方推荐的写法是这样的:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
这个要在你的 ViewController 里才可以...... 但你绝望地发现,它根本没有被调用。
于是你继续搜索......
在你的 信息.plist中 里, 视图 控制者-基于 状态 酒吧 出现 必须设置为 YES ,否则就只能在 Xcode 的 target 中设置状态栏的黑白配色。
但是...... preferredStatusBarStyle 依旧没有被调用。
这到底是怎么回事?
这实际上是由于 UINavigationController 导致的,由于它通常是 ViewController 里的最高层级,它不会将 preferredStatusBarStyle 请求向下传递,相反,它会根据自身的 UINavigationBar.barStyle 属性来决定系统状态栏到底是黑色还是白色,如果 barStyle 是 .黑色 ,那么系统栏就是 .lightContent 也就是白色; 但如果 barStyle 是 .默认 ,那么系统栏就也是默认的黑色了。
所以,如果你想改变系统栏颜色,在 UINavigationController 下的 ViewController 就需要修改 UINavigationBar.barStyle 而不是重写 preferredStatusBarStyle 。
另外
如果你是在 iOS 13 以上版本的 iOS 中这么做,你会发现系统状态栏还是不变...... 所以你可能需要在你的 信息.plist中 里加上 UIUserInterfaceStyle 字段,并设置值为 光 ,这样可以让你的 App 不配适 iOS 13 的黑色模式——因为如果配适了的话,在黑色模式下,你的系统状态栏将永远是白色,不会变色......
本文来源:云鹰电商
本文地址:https://www.yunyingds.com/post/1929.html
关注我们:刷卡问题加微信搜索“sdb235”添加我为好友
版权声明:如无特别注明,转载请注明本文地址!
- •iPhone 16如何关机、重新开机与强制关机教学技巧
- •苹果 M4 Max GPU 性能可媲美 RTX 4080
- •iPhone 游戏模式怎么用? iOS 18「游戏模式」完整使用教学
- •iOS 18.1 Clean Up 去除功能实测,iPhone 终于有这功能可用了
- •iOS18 手电筒界面大改版! 支持滑动调整亮度与广度
- •macOS Sequoia 15.2新增多项人工智能功能,集成ChatGPT成亮点
- •微软宣布 Windows Mail 今年 12 月底全面停止运作 用户需转到 Outlook
- •VMware 宣布 Fusion 与 Workstation 全面免费开放使用
- •iOS 18.1 Beta 3 新增AI「重要通知」功能
- •20个iPhone 16规格爆料与iPhone 15差异比较一表看完