【iOS開發】防止UIWindow延遲釋放佔用狀態列
在展示 app 啟動廣告等情況下,我們可能需要在介面上疊加一個 UIWindow,但是實測情況下發現,由於 UIWindow 會被系統引用導致延遲釋放,在 customWindow 例項被使用完之後,單純
customWindow.rootViewController = [[UIViewController alloc] init];
customWindow = nil;
是不能讓 customWindow 完全對當前介面沒有影響的,其中有可能出現的一個問題是:app 使用各個 VC 獨立管理狀態列的方式時,我們通過 [[UIViewController alloc] init]
建立的 VC 是有狀態列的,這是當 app 需要展示的其他 UIWindow 裡面的 VC 沒有狀態列時,customWindow 會浮在最頂層,強行疊加一個狀態列出來(iOS 9 親測)。
這時改 keyWindow 或者設定 windowLevel 都是沒有用的,各種嘗試之後,解決方案是在把 window 設為 nil 之前,加一句 setHidden:
customWindow.rootViewController = [[UIViewController alloc] init];
[customWindow setHidden:YES];
customWindow = nil;
FYI.
相關文章
- 防止 UIWindow 延遲釋放佔用狀態列UI
- 【iOS開發】強制修改iOS狀態列顏色iOS
- 延遲釋出
- 學習會員收益延遲發放通知
- “自釋放”在iOS開發中的應用iOS
- Laravel 延遲佇列Laravel佇列
- redis 延遲佇列Redis佇列
- ios開發筆記--狀態列的自定義,隱藏iOS筆記
- mysql主從同步(4)-Slave延遲狀態監控MySql主從同步
- 實現簡單延遲佇列和分散式延遲佇列佇列分散式
- iOS隱藏狀態列iOS
- 延遲阻塞佇列 DelayQueue佇列
- 春節假期學習會員收益延遲發放通知
- iOS開發 列舉註釋iOS
- linux釋放佔用埠Linux
- iOS 狀態列的圖示iOS
- iOS狀態列相關操作iOS
- 防止專案延遲的18條軍規(轉)
- 防止專案延遲的18條軍規 (轉)
- 元旦假期學習會員收益延遲發放通知
- RabbitMQ實戰《延遲佇列》MQ佇列
- RabbitMQ實現延遲佇列MQ佇列
- RabbitMQ 實現延遲佇列MQ佇列
- [Redis]延遲訊息佇列Redis佇列
- 【iOS開發】修改present出來的ViewController狀態列顏色iOSViewController
- Mysql slave 延遲故障一列MySql
- HarmonyOS NEXT應用開發案例—狀態列顯隱變化
- php+redis實現延遲佇列PHPRedis佇列
- 如何用RabbitMQ實現延遲佇列MQ佇列
- Spring Boot(十四)RabbitMQ延遲佇列Spring BootMQ佇列
- RabbitMQ、RocketMQ、Kafka延遲佇列實現MQKafka佇列
- Golang 實現 RabbitMQ 的延遲佇列GolangMQ佇列
- iOS開發 自動釋放池(Autorelease Pool)和RunLoopiOSOOP
- 短視訊平臺搭建,ios端延遲的執行方式,新增各種延遲iOS
- iOS 靈活的控制狀態列StatusBariOS
- IOS設定狀態列的背景顏色iOS
- iOS專案開發實戰——自定義設定導航欄和狀態列背景iOS
- C++ Qt開發:StatusBar底部狀態列元件C++QT元件