UIWindow

簡(jiǎn)介

UIWindow為用戶交互界面提供了一個(gè)背景,并且監(jiān)聽和處理用戶的操作畏邢。UIWindow 本身并不可見舒萎,但是它們對(duì)于views對(duì)象的顯示尤為重要。每一個(gè)顯示的view 都是嵌套在一個(gè)window上面的臂寝,并且每一個(gè)window都是相互獨(dú)立的。App的時(shí)間總是先由window截獲败徊,然后發(fā)送給相應(yīng)的view進(jìn)行處理素征。window和viewcontroller一起合作才實(shí)現(xiàn)了app關(guān)于頁(yè)面轉(zhuǎn)向和其他一些基礎(chǔ)的功能

概覽

WIndow 是應(yīng)用的基本組成部分萝挤,但是實(shí)際上你很少和window打交道根欧。UIKit已經(jīng)幫你解決了大部分和window操作相關(guān)的事件了。你需要做的就是:

  1. 在App開始時(shí)凤粗,提供一個(gè)主Window。
  2. 如果有其他戰(zhàn)士需求柔袁,就創(chuàng)建另外的Windows异逐。

大部分App都只用到一個(gè)Window。但是你有其他需求的時(shí)候灰瞻,也可以創(chuàng)建另外的WIndows來(lái)展現(xiàn)內(nèi)容。
你可以使用Window來(lái)完成一下工作:

  1. 設(shè)置window 的z坐標(biāo)燎竖,它會(huì)影響該window相對(duì)于其他window的視角要销。
  2. 顯示window,并讓它成為事件接收器纤掸。
  3. 獲取Window 中坐標(biāo)的轉(zhuǎn)換(轉(zhuǎn)出 或者 轉(zhuǎn)入)凳鬓。
  4. 改變window 的根視圖控制器。
  5. 改變 Window 所顯示的 UIScreen缩举。
    一般不建議繼承UIWindow匹颤,因?yàn)槟芟胍稍赨IWindow 上的操作,能夠很容易的在UIViewController上面實(shí)現(xiàn)出來(lái)辽慕。 但是某些情況下赦肃,當(dāng)你想要復(fù)寫 becomeKey() 和 resignKey() 這兩個(gè)方法時(shí)公浪,可以繼承UIWindow船侧。

創(chuàng)建額外的Windows

除了主Window,你還需要負(fù)責(zé)創(chuàng)建和維護(hù)其他的windows镜撩。通常的使用方式是在額外的Window 上面顯示內(nèi)容袁梗,或者在同一屏幕上顯示多個(gè)Windows。
當(dāng)創(chuàng)建Window 的時(shí)候遮怜,需要賦給Window大小和在哪個(gè)屏幕上顯示。你也應(yīng)當(dāng)寫明提供視圖的根視圖控制器即碗。盡管你可以直接在Window上面添加Views涝桅,但是使用試圖控制器可以更方便的來(lái)管理Window 的內(nèi)容。使用視圖控制器可以分隔Window 和 顯示的內(nèi)容冯遂。
Listing 1 是一個(gè)創(chuàng)建第二個(gè)Window 的例子。
Listing 1 :

func configureExternalDisplayAndShowWithContent(rootVC : UIViewController) {
    let screens = UIScreen.screens()
    // Configure the content only if a second screen is available.
    if screens.count > 1 {
        let externalScreen = screens[1]
        let screenBounds = externalScreen.bounds
        // Create and configure the window.
        self.externalWindow = UIWindow.init(frame: screenBounds)
        self.externalWindow!.windowLevel = UIWindowLevelNormal
        self.externalWindow!.screen = externalScreen
        
        // Install the root view controller
        self.externalWindow!.rootViewController = rootVC
        
        // Show the window, but do not make it key
        self.externalWindow!.hidden = false
    }
    else {
        // No external display available for configuration.
    }
}

理解鍵盤交互

因?yàn)橛|摸事件是傳遞給所在的Window的壁却,而那些沒(méi)有相對(duì)坐標(biāo)位置的事件則是傳遞給 key window 展东,一個(gè)時(shí)間點(diǎn)下只有一個(gè)key window炒俱,你可以通過(guò)isKeyWindow 屬性來(lái)改變誰(shuí)是主 Window。大多數(shù)情況下权悟,你App 的主window 就是 key window。但是UIKit 也設(shè)計(jì)了不同的window谦铃。
如果你需要知道誰(shuí)是 key window榔昔,可以通過(guò)監(jiān)聽 UIWindowDidBecomeKeyUIWindowDidResignKey 這兩個(gè)系統(tǒng)通知來(lái)獲取信息瘪菌。當(dāng)key window 發(fā)生改變的時(shí)候嘹朗,系統(tǒng)會(huì)發(fā)出這兩個(gè)通知。

詳細(xì)參照

Apple UIWindow Document

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疆栏,一起剝皮案震驚了整個(gè)濱河市惫谤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌溜歪,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件调衰,死亡現(xiàn)場(chǎng)離奇詭異自阱,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)趋箩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門加派,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人竹勉,你說(shuō)我怎么就攤上這事娄琉。” “怎么了孽水?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵匈棘,是天一觀的道長(zhǎng)析命。 經(jīng)常有香客問(wèn)我逃默,道長(zhǎng)簇搅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任吟税,我火速辦了婚禮姿现,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘备典。我一直安慰自己,他們只是感情好吮蛹,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布拌屏。 她就那樣靜靜地躺著,像睡著了一般每篷。 火紅的嫁衣襯著肌膚如雪务唐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天吨灭,我揣著相機(jī)與錄音刑巧,去河邊找鬼喧兄。 笑死啊楚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拯辙。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼诉濒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼夕春!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起及志,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤速侈,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后锌畸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡比默,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年命咐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谐岁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窜司,死狀恐怖航揉,靈堂內(nèi)的尸體忽然破棺而出塞祈,到底是詐尸還是另有隱情帅涂,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布斯议,位于F島的核電站醇锚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏艇搀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芳杏。 院中可真熱鬧,春花似錦爵赵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至但两,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绽快,已是汗流浹背紧阔。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留活孩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓诱鞠,卻偏偏與公主長(zhǎng)得像这敬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子阳掐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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