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的两个方法,返回外界给的值

相关文章
相关标签/搜索