Interface Builder

Interface Builder 通常簡稱為 IB,在 Project 下面有各種分類檔案,其中當打開 *.xib 會開啓 Interface Builder。

Interface Builder 有很長的歷史,它從 1988 年就開始被使用於開發 NextSTEP, OpenSTEP, Mac OS X, 和現在的 iPhone 應用程式。 Interface Builder 支援兩種檔案類型:一種是舊的格式附檔名為 .nib,新型的格式附檔名為 .xib。在 iPhone project 裡面預設都是使用 .xib,但是直到最近,所有 Interface Builder 檔案附檔名為 .nib。Interface Builder 檔案都通常被稱為 nib 檔案,不論是附檔名為 .xib 或者 .nib。而且實際上,Apple 實際在文件裡面都是用 nib 這個 term。

我們可以透過寫 code 來建立一個 button,但是更好用點,可以使用 Interface Builder 來建立 button ,且設定它的 attributes 不論是 shape, size, label 等等。舉例來說,想要加一個 button 到 application,可以寫這樣子:

UIButton *myButton = [[UIButton alloc] initWithFrame:aRect];

在 Interface Builder,我們可以達到同樣效果,透過拖拉一個 button 到 application 的主要是窗裡面。Interface Builder 讓它簡單來設定 button 的 attributes,當 button 會儲存在 nib 檔案裡面,應用程式再啟動時候,就會自動的建立 show 出來。

在每一份 Nib 檔案裡面,起頭一定會有兩個 icons,分別是 File's Owner 和 First Responder。它們是自動被建立起來,而且不能被刪除的。所以到這邊就可以知道,它們的重要性。File's Owner 是一個 object 記載這份 nib file 是誰 owns 它,而 First responder 是一個 object 記載當使用者正在跟它互動。例如當使用者正在輸入資料到一個 text field,這個 field 是正在使用的 first responder。先知到這樣概念,這兩個檔案一定會存在。剩下在 IB 的 object 就是開始逐漸透過旁邊介面一一建立出來。

在很多軟體開發環境會用到一些可以讓我們透過視覺界面建立 user interface 的工具。但是 Interface Builder 和其他工具有很大差別,在於 IB 不會產生任何需要維護的程式碼。IB 會建立 Objective-C objects,就如同從程式一般,但是它些會放入nib 檔案,透過 runtime 被載入到 memory 裡面。這樣可以避免很多 code generation 出來問題,而且這樣也是一個很強的特色。

更多資訊可以參考 Beginning IPhone 3 Development: Exploring the IPhone SDK - Introducing Interface Builder。

Comments