? ? ? ? 今天工作不是很繁忙,突然看到APP里的分享界面上無法被陰影遮蓋住的狀態欄,頓生想要解決這個視而不見已久問題的想法。
? ? ? ? 之前的做法一直都是直接把陰影視圖直接add到keyWindow上,這樣的做法是無法把狀態欄壓在身下的。其實之前思考過這個問題,感覺和window有關。今天隨便一搜,發現UIWindowLevel這么個玩意,瞬間秒懂。是不是我把window的這個屬性設置成UIWindowLevelAlert就能和UIAlertView一樣蓋住狀態欄了呢。
? ? ? ? 嗯。沒錯。。機智的我立馬在原來代碼里把keyWindow的windowLevel設置成了UIWindowLevelAlert,在移除陰影后把keyWindow的level設置為normal。。Amazing,狀態欄果然被蓋住了。但是不是被陰影而是被整個keyWindow蓋住了。
? ? ? ? 機智的我瞬間明白了其中的奧妙,隨即想出了替代方案,自己創建一個window,將其level設置成UIWindowLevelAlert,把陰影加到上面去,makeKeyAndVisible。然后在要消失陰影的時候讓之前的keyWindow,makeKeyAndVisible,再把自己創建的window置為空,完美~
? ? ? ? 試了一下,效果拔群。哦吼,機智的我又想到了,既然這么多地方都用到,干脆寫個小輪子得了。
? ? ? ? 然后,重點來了,當我把在APP工程里的行為復刻到新建的工程里,發現效果并不像在APP里一樣,自己創建的window并沒有消失。只有當我在點擊一下屏幕時,window才會消失并被釋放。
寫了那么多沒用的,其實我想說的就是以下幾點,也是今天對于UIWindow的發現。
1、要讓自己創建的window顯示出來有兩種方法:
? ? ? ? 1、makeKeyAndVisible
? ? ? ? 2、直接設置它的hidden屬性為NO