文章目錄
在開始前,我想大家應該先讀一讀 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, 最終他們都顯示在了螢幕上。