和我一起來學iOS(三)UIView及其子類(上)

來源:互聯網
上載者:User
文章目錄
  • 一、UIWindow

在開始前,我想大家應該先讀一讀 Mac OS X 背後的故事,是一篇非常不錯的文章。瞭解曾經發生的過去,才能對現在為什麼會是這樣有更深刻的認識。

xib與nib的淵源

Project Builder 在 Mac OS X 10.3 時被重新命名為現在大家所熟知的 Xcode。Xcode 3以前,Interface Builder 使用一種名為 nib 格式的二進位檔案格式。不過由於 nib 不能用肉眼讀,也不方便使用版本管理工具來管理,所以 Xcode 3 開始新加入一種名為 xib 的文字檔格式,最後再在項目編譯階段輸出為 nib 格式。和產生靜態介面布局代碼的工具很不同,nib 是不被轉譯成相應 Objective-C 代碼的。使用者程式執行時,nib 檔被讀入,解包,所以 nib 檔是在運行時動態載入的。

UIView類代表的含義

UIView繼承於UIResponder類,因此它主要表達了兩個意思

1.可視(CALayer)
2.可互交(UIResponder)

每個UIView都有一個隱式層(implicit Layer),View本身就是這個隱式層的Delegate.
為什麼要有層這個東西?因為作圖等都是在層上完成,然後再合成。因為UIView有了Layer所以才能顯示。

Layer又有兩部分組成。present layer和Model layer.
present layer表示了中間的過程狀態,而Model layer則表示了起始和結束狀態

初始化方法

- (id)initWithFrame:(CGRect)frame

其中frame指定了這個View的大小和位置,起始點在左上方。

 

 

UIView的子類一、UIWindow

UIWindow是作為包含了其他所有View的一個容器。每一個程式裡面都會有一個UIWindow。下面這段代碼裡我們在程式啟動完成後執行個體化了一個UIWindow類,並調用了它的makeKeyAndVisible方法。這個方法使得window在螢幕上可見。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];   self.window.backgroundColor = [UIColor whiteColor]; 
  [self.window makeKeyAndVisible];  return YES;}
 
讓View顯示在螢幕上

一旦window在螢幕上可見了,之後任何加入window的view都會在螢幕上可見。換句話說,要使得一個view在螢幕上可見,需要把它加入到window之中。當一個view被加入到window的時候,那麼這個view就被稱為window的subview。每一個view都可以有自己的subview。Window是這個層級結構中的根節點。前面說了一個view如果想被顯示到螢幕上,就需要作為window的subview。除了直接加入window的subview之外,作為已經加入window的view的subview也算是間接作為window的subview,因此也可以顯示在螢幕上。 結構可以參照(圖來自iOS Programming 3rd),MKMapView作為UIWindow的subview, UITextfield和UIButton又作為MKMapView的subview, 最終他們都顯示在了螢幕上。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.