深入了解iOS UIWindow

簡介

概念

UIWindow是iOS中用于顯示內(nèi)容敬惦、處理觸控等功能的基礎(chǔ)

重要知識

  1. 每個app必須要有一個keyWindow才能正常運行蔫浆,如果是通過代碼創(chuàng)建的項目突颊,需要為AppDelegate創(chuàng)建一個window丧枪,并調(diào)用makeKeyAndVisible()來讓window顯示。當(dāng)然不要忘了設(shè)置window的rootViewController
  2. window通過windowLevel來決定window顯示的層級日杈,也就是z軸的值遣铝。系統(tǒng)定義了normal, statusBar, alert三個層級佑刷,當(dāng)前這個windowLevel本質(zhì)是個rawValue為Int的枚舉,所以我們可以按需要創(chuàng)建任意層級的level酿炸。如在statusBar上瘫絮,在alert下的層次

常用方法

  1. 通過設(shè)置rootViewController來更換場景。
    • 如登錄完成后填硕,要進入主頁面麦萤,此時登錄相關(guān)的頁面可以釋放,替換成主頁面相關(guān)的控制器
  2. 通過keyWindow.addSubview()在最上層的視圖上面顯示內(nèi)容廷支。
    • 如當(dāng)前控制器可能被嵌入在UINavigationController或者UITabBarController里,上方的導(dǎo)航欄和下面的tabBar被不屬于子控制器栓辜,而我們想把內(nèi)容全屏顯示恋拍。
    • 如在網(wǎng)絡(luò)層或者某些Model層想展示一個toast,此時不方便獲取到目前現(xiàn)在顯示的視圖
  3. 通過新建一個windowLevel更高的UIWindow藕甩,來實現(xiàn)某些內(nèi)容永遠處于最上面施敢。
    • 如想實現(xiàn)一個浮動按鈕,不會被任何其他內(nèi)容遮蓋狭莱。
    • 如某些游戲會在進入前臺時同步數(shù)據(jù)僵娃,同步時用動畫要遮住正常內(nèi)容,以防用戶改時間作弊腋妙。
  4. 全屏的顯示或者橫屏顯示內(nèi)容
  5. 通過window的safeInset來確定是不是劉海屏默怨。

延伸

在用 UIApplication.shared.keyWindow 獲取keyWindow時,現(xiàn)在會出現(xiàn)一個該屬性被廢棄的警告骤素。

出現(xiàn)這個警告的原因是匙睹,iOS 13 之后,一個app可能有多個scene济竹,也就是說可能有多個keyWindow痕檬,所以該屬性被廢棄。

如果app沒有多個scene送浊,使用該方法獲取keyWindow是完成沒問題的梦谜。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市袭景,隨后出現(xiàn)的幾起案子唁桩,更是在濱河造成了極大的恐慌,老刑警劉巖耸棒,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朵夏,死亡現(xiàn)場離奇詭異,居然都是意外死亡榆纽,警方通過查閱死者的電腦和手機仰猖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門捏肢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饥侵,你說我怎么就攤上這事鸵赫。” “怎么了躏升?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵辩棒,是天一觀的道長。 經(jīng)常有香客問我膨疏,道長一睁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任佃却,我火速辦了婚禮者吁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饲帅。我一直安慰自己复凳,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布灶泵。 她就那樣靜靜地躺著育八,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赦邻。 梳的紋絲不亂的頭發(fā)上髓棋,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機與錄音惶洲,去河邊找鬼仲锄。 笑死,一個胖子當(dāng)著我的面吹牛湃鹊,可吹牛的內(nèi)容都是我干的儒喊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼币呵,長吁一口氣:“原來是場噩夢啊……” “哼怀愧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起余赢,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤芯义,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后妻柒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扛拨,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年举塔,在試婚紗的時候發(fā)現(xiàn)自己被綠了绑警。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片求泰。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖计盒,靈堂內(nèi)的尸體忽然破棺而出渴频,到底是詐尸還是另有隱情,我是刑警寧澤北启,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布卜朗,位于F島的核電站,受9級特大地震影響咕村,放射性物質(zhì)發(fā)生泄漏场钉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一懈涛、第九天 我趴在偏房一處隱蔽的房頂上張望逛万。 院中可真熱鬧,春花似錦肩钠、人聲如沸泣港。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至呛每,卻和暖如春踩窖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晨横。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工洋腮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人手形。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓啥供,卻偏偏與公主長得像,于是被迫代替她去往敵國和親库糠。 傳聞我的和親對象是個殘疾皇子伙狐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容

  • UIView的功能 負責(zé)渲染區(qū)域的內(nèi)容,并且響應(yīng)該區(qū)域內(nèi)發(fā)生的觸摸事件 UIWindow 在iOS App中瞬欧,UI...
    小蘑菇2閱讀 775評論 4 5
  • 一贷屎、簡介 <<UIWindow類定義,管理和協(xié)調(diào)的Windows應(yīng)用程序顯示在屏幕上的對象(如Windows)艘虎。一...
    無邪8閱讀 1,359評論 2 3
  • UIWindow是最頂層界面容器 第一個ViewController加載在這個界面上唉侄。一共分三個級別: UIWin...
    一葉之秋宇閱讀 176評論 0 0
  • UIWindow *window = [[UIApplication sharedApplication]wind...
    小劉_假裝是個程序員閱讀 4,256評論 0 2
  • 之前寫了一篇名為iOS視圖成像解構(gòu)的文章,iOS視圖成像解構(gòu)主要是結(jié)合各種工具來分析程序中視圖在不同布局下產(chǎn)生的一...
    一個人在路上走下去閱讀 1,745評論 5 43