如何將UIView覆蓋到狀態欄之上

近在做模仿新浪微博的圖片瀏覽系統,快要完成的時候發現狀態欄并沒有完全的隱藏掉.


在充電狀態下還是能看到狀態欄

原來的代碼是

- (void)show { UIWindow *window = [UIApplication sharedApplication].keyWindow; self.frame = window.bounds; [window addSubview:self];}

查找資料,才知道

通過[UIApplication sharedApplication].keyWindow
獲取得到的UIWindow不一定是在界面的最上面.UIWindow有一個UIWindowLevel的屬性,該屬性定義了UIWindow的層級,系統定義的WindowLevel一共有3種取值:
UIWindowLevelNormal
UIWindowLevelAlert
UIWindowLevelStatusBar

將下面這些代碼輸出:

NSLog(@"UIWindowLevelNormal==%f, UIWindowLevelAlert==%f, UIWindowLevelStatusBar==%f",UIWindowLevelNormal,UIWindowLevelAlert,UIWindowLevelStatusBar);

得到的結果是:


打印結果

所以,重點就是你只要通過修改Window的UIWindowLevel屬性,就能夠使得添加到UIWindow上的UIView覆蓋到狀態欄只上了.

這是修改之后的代碼:

- (void)show { UIWindow *window = [UIApplication sharedApplication].keyWindow; window.windowLevel = UIWindowLevelAlert; self.frame = window.bounds; [window addSubview:self];}

效果:


改變UIWindowLevel之后的效果

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 最近在做模仿新浪微博的圖片瀏覽系統,快要完成的時候發現狀態欄并沒有完全的隱藏掉. 原來的代碼是 查找資料,才知道 ...
    kikido閱讀 5,187評論 1 7
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,288評論 25 708
  • 跟大卡、芳芳吃完飯,發現打不到車。 一看表,還不算晚,心想,干脆坐地鐵回家吧——于是按著地圖,不緊不慢地走。 走著...
    九虎閱讀 702評論 0 50
  • 有一種母愛叫本能,有一種父愛叫責任,有一種親情叫守候,有一種友情叫陪伴,有一種幸福叫看你長大…… 4月3日,出門在...
    董余蘭閱讀 9,774評論 48 80
  • Date.parse()、Date.UTC()、Date.now() Date.parse()方法接收一個表示日期...
    shanruopeng閱讀 267評論 0 1