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的兩個方法,返回外界給的值
歡迎關注本站公眾號,獲取更多信息