UIWindow的那些事,UIWindow那些事

來源:互聯網
上載者:User

UIWindow的那些事,UIWindow那些事

UIView是視圖的基類,UIViewController是視圖控制器的基類,UIResponder是表示一個可以在螢幕上響應觸摸事件的對象;

一、UIWindow是一種特殊的UIView,通常在一個程式中只會有一個UIWindow,但可以手動建立多個UIWindow,同時加到程式裡面。UIWindow在程式中主要起到三個作用:

  1、作為容器,包含app所要顯示的所有視圖

  2、傳遞觸摸訊息到程式中view和其他對象

  3、與UIViewController協同工作,方便完成裝置方向旋轉的支援

二、通常我們可以採取兩種方法將view添加到UIWindow中:

  1、addSubview

  直接將view通過addSubview方式添加到window中,程式負責維護view的生命週期以及重新整理,但是並不會為去理會view對應的ViewController,因此採用這種方法將view添加到window以後,我們還要保持view對應的ViewController的有效性,不能過早釋放。

  2、rootViewController

  rootViewController時UIWindow的一個遍曆方法,通過設定該屬性為要添加view對應的ViewController,UIWindow將會自動將其view添加到當前window中,同時負責ViewController和view的生命週期的維護,防止其過早釋放

 

主視窗(key window)接受特定事件

  一個視窗當前能接受鍵盤和非觸摸事件時,便被認為是主視窗。而觸摸事件則被投遞到觸摸發生的視窗,沒有相應座標值的事件被投遞到主視窗。同一時刻只有一個視窗是主視窗。

  大部分時間內,應用視窗是主視窗。由於iOS使用單獨的視窗來顯示警告視圖(alert view)和輸入附件視圖(input accessory view),這些視窗也可以成為主視窗。例如,當一個講稿視圖或者輸入附件視圖有一個文字框,而使用者當前正在這個文字框中輸入,那麼包含此輸入視圖的視窗便是主視窗。

  絕大多數應用視窗處在同一等級

  當你為應用建立一個新視窗時,UIVindow類自動賦給它一個等級,稱為正常視窗等級(normal window level),這個等級對顯示應用相關內容的視窗是合適的。這個等級,可以通過windowLevel屬性來設定,它代表視窗相對其他視窗在z軸所處的位置。你可以使與應用相關的視窗在其他等級顯示,但這不是必須的。

  除了用於顯示應用相關內容的視窗外,還有一些高等級的視窗,他們顯示一些需要懸浮在應用內容之上的資訊。例如系統狀態列和警告等。

具體關於keyWindow和WindowLevel的詳情可以參考:http://www.cnblogs.com/smileEvday/archive/2012/11/16/UIWindow.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.