在iOS6到iOS8時,我們設置app的狀態欄樣式,一般把info.plist里面設置了View controller- based status bar appearance為NO,默認為YES,來應用程序來管理。這樣的話多window時,并不會有影響狀態欄的樣式,因為狀態欄是由應用UIApplication來管理。
到了iOS9之后,上面的配置就會就會報警告。對于一名看不得警告的程序員來說,這是很難受的。那么想要消除這些警告,就必須將View controller-based status bar appearance設置為YES(或刪除這條配置,因為默認就為YES)。這樣的話在單個window時不會出現問題,但是如果你的應用有多個window,且其它的window的顯示級別比主window的級別高時就會出現問題。因為狀態欄的管理默認是交給最上面那個window的根控制器來管理的。
那么該怎樣來處理這個問題呢?
我用的方法比較笨,就是在其它window窗口中哪個控制器需要修改狀態欄的狀態就拿到最上面的那個window,然后替換掉它的根控制器(這個根控制器里已經設置了你希望的狀態欄的樣式),這樣就相當于我們需要多套控制器來實現這個功能了。
上面的方法很笨但是我一直沒找到合適的方法,如果哪位大神有更加合理的方法,希望及時的分享下,謝謝!
github地址:https://github.com/SilongLi