iOS开发中的错误整理,iOS9之后的UIWindow(TopWindow)以及UIWindow与statusBar的关系
iOS9之后的UIWindow的问题(TopWindow),以及UIWindow与statusBar之间的联系
1.出现的问题
- iOS9之后UIWindow必须要指定一个根控制器,不然会报错!iOS9之前只是警告
- 当创建了window,指定了根控制器之后.在别的控制器设置statusBar的样式和颜色没有效果.因为
statusBar的样式和颜色是由位于最顶端的UIWindow的控制器决定的!
2.问题解决
- 将topWindow实现为单例模式(这里简单实现,完整的单例模式请参考之前的整理),为了以后无论在哪里都可以拿到topWindow
- 对外界提供两个属性,一个决定statusBar的样式,另一个决定statusBase的显示与隐藏
- 重写这两个属性的setter,只要外界赋值,就执行
[self setNeedsStatusBarAppearanceUpdate];
,不要直接调用prefersStatusBarHidden方法等,没用
- 重写设置statusBase的两个方法,返回外界给的值
原文地址:https://www.cnblogs.com/gchlcc/p/5668498.html