防止 UIWindow 延遲釋放佔用狀態欄

在展現 app 啓動廣告等狀況下,咱們可能須要在界面上疊加一個 UIWindow,可是實測狀況下發現,因爲 UIWindow 會被系統引用致使延遲釋放,在 customWindow 實例被使用完以後,單純bash

customWindow.rootViewController = [[UIViewController alloc] init];
customWindow = nil;複製代碼

不能讓 customWindow 徹底對當前界面沒有影響的,其中有可能出現的一個問題是:app 使用各個 VC 獨立管理狀態欄的方式時,咱們經過 [[UIViewController alloc] init] 建立的 VC 是有狀態欄的,這是當 app 須要展現的其餘 UIWindow 裏面的 VC 沒有狀態欄時,customWindow 會浮在最頂層,強行疊加一個狀態欄出來(iOS 9 親測)。app

這時改 keyWindow 或者設置 windowLevel 都是沒有用的,各類嘗試以後,解決方案是在把 window 設爲 nil 以前,加一句 setHidden:ui

customWindow.rootViewController = [[UIViewController alloc] init];
[customWindow setHidden:YES];
customWindow = nil;複製代碼

FYI.spa

相關文章
相關標籤/搜索