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