我對Cocoa MacOSX非常陌生,但我不禁感到自己在不斷地與Interface Builder戰鬥。爲什麼它像Interface Builder一樣受到我的影響?
我目前的情況是,我正在構建一個將有幾個自定義控件和視圖的應用程序。我開始在Interface Builder中構建應用程序,因爲它最初很容易拖動,並使用正確的顏色和正確的自動調整規則將它們放入正確的位置。然而,現在是開始構建我的自定義控件和視圖的時候了 - 我無法在界面構建器中很好地展示這些控件和視圖,而無需通過構建IBPlugin的工作!我知道的唯一的另一個選項是有一個Interface Builder文檔,其中包含一大堆「自定義視圖」,只是改變了它們的類。突然間似乎毫無意義地對待IB - 尤其是鑑於這些控制和視圖將具有需要設置的顏色等屬性 - 就像IB文檔中已有的其他視圖和控件一樣。所以現在我已經在兩個不連貫的地方設置了可視化屬性,並且似乎對抗了IB的潛在優勢之一,這使得在不挖掘代碼的情況下調整應用的UI相對容易。
我也遇到過幾種控件根據數據或當前選擇更改屬性(如顏色)的情況。所以現在我有在Interface Builder中指定的控件的初始默認顏色,但是我必須在代碼中指定數據驅動的顏色?再次,Interface Builder似乎讓我不得不在它的世界和代碼之間拆分一些演示設置。我想可以用一個複雜的插件來解決這個問題,這個插件可以知道我的數據或者狀態或者其他信息,但是似乎我最終會維護大量的支持代碼,所以Interface Builder的體驗仍然是「正確的」。
我經常看到的其他東西是如何輕鬆地讓IB定義組件之間的綁定。 「你可以在不寫任何代碼的情況下做到這一點!」再說一遍,我可能會錯過一些東西,但根據我的情況,將一個屬性綁定到另一個屬性是單行代碼。在IB中設置幾個屬性比寫單行代碼更好?爲什麼在表示層的規範中放入多少應用邏輯更好?我很喜歡這個Cocoa的東西,但是我覺得我錯過了一些非常重要的關於如何使用Interface Builder的東西,或者它主要是爲了一些簡單的演示應用而設計的,高「哇」因素。
讓我們看看你的用戶界面是什麼樣的。 – 2009-10-27 18:40:03
下面的答案已經涵蓋了我會做的任何一點,所以這只是一個評論,說:你並不孤單!我正在與另一名開發人員一起開發一個大型Cocoa項目的最後階段。我們開始使用IB,但由於我們的用戶界面是高度定製的,我們最終放棄了它。在我看來,IB非常適合學習Cocoa應用程序開發的基礎知識,以及完全符合Apple UI標準的小型項目。大多數定製或複雜的應用程序將更好地在代碼中弄清楚事情。 – 2009-10-28 03:37:53
對於這個問題的一些更好的討論:http://stackoverflow.com/questions/1056079/is-there-a-way-to-programmatically-determine-the-proper-sizes-for-apples-built-i – 2009-10-28 03:40:16