2011-09-20 25 views
3

隨着我製作的iPad應用程序的規模不斷擴大,我很難跟蹤UI設計的價值。在這裏,我正在討論諸如表格寬度,背景顏色和標題字體等值。如何在iOS中組織UI設計變量,對象等?

我想更有效地組織所有UI設計相關的值和對象。

你如何組織這些?

  • 你是否在頭文件中定義了值?
  • 你是否將它們聲明爲全局變量?
  • 你把你的值放在一個靜態類嗎?
  • 或者你認爲不是組織這些價值觀更好?

我想聽聽您的建議。 謝謝:)

回答

2

是它依賴,拇指因此只是一些規則...

Do you #define values in a header file? 

...在我可能要在本地只有改變這種情況下,例如爲常數,顏色,對齊,按鈕圖像, ......最主要的原因,我這樣做不過這是它允許通過給當地的定義長解釋名稱

Do you declare them as global variables or not? 

...的所有我的應用我有一個MainDataManager類的文檔,保存所有的變量我需要全局 - 對於UI部分,我經常擁有自己的全局使用對象。這非常有用,簡化了代碼,並且可能是我早期學到的最重要的事情之一。也可能在這裏看到Using Variable of AppDelegate as a Global Variable - question regarding release/retain

Do you put your values one static class? 

...靜態類存在一種概念上。當你想給某種方法某種自己的記憶時,靜態變量非常有用。但是,在我的用戶界面中沒有任何重要的角色。

In general,我喜歡用IB來佈局屏幕,但在代碼中設置所有的按鈕名稱,標籤,文本。爲什麼?因爲當我必須將維護多個XIB文件的應用程序本地化時(對於每種語言,將會有一個獨立的XIB文件要維護)成爲一個真正的負擔,即使佈局中只有一個更改。

所有全局常量設置始終保持在GloblDefinitions.h,而在同一時間,我有我的.PCH文件中的此項#進口「GlobalDefinitions.h」

所以委託變量的combintation在全球提供+常量的GlobalDefinitions.h是我的解決方案。

0

好賴安,取決於你.. 你可以使用預處理器指令.. 聲明在.pch文件中。

,或者你可以讓一個對象類把所有的常量....

希望這將幫助你..

感謝

1

它是一個很好的問題。將界面生成器與手動編輯的UI調整和/或自定義組件結合使用時,您也有IB和代碼之間的重複值問題。

在某些情況下,爲了便於閱讀和第三方進行調整,如果值只是就地硬編碼,則更容易 - 所以在分數情況下(例如,在其他地方不重複該值或不可能改變)這可能是一個有效的選擇。

一般來說,如果常量是特定於特定UI組件的佈局,那麼在使用它們的UI組件的頭文件中#define它們似乎是有意義的 - 我認爲將它們全部放在一個全局文件打破了用戶界面組件之間想要的解耦,並且爲了便於閱讀,另一個開發人員可以更輕鬆地在頭文件中找到它們。

另一方面,如果在一個應用程序中存在跨多個UI組件一致使用的值,則可以在全局包含文件中定義這些值。同樣,如果存在用於派生其他長度等的「基本」值,這些長度等常用於多個UI組件,則這些值也可以存儲在全局包含中。

同樣儘可能地利用佈局管理器邊緣靈活性設置和寬度/高度靈活性設置來最小化對硬代碼值的需要。當相關時,從基本值或系統值(例如屏幕寬度)導出值。

在一天結束時,如果代碼中存在的值有時比在其他文件中更改#define更容易理解和調整 - 另一方面 - 如果相同的值在多個地方重複,並且#define沒有被使用,那麼對於另一個編碼器進來並且僅改變這些重複值中的一個並且試圖理解和篩選所得到的副作用以及在其他地方值應該改變。

0

這是我從我之前的幾個項目中學到的。

1]命名約定 - 使用適當的標準化前綴。 ex tblRecordLis,viewControlPanel等

2]將常量保持在一起 - 將所有常量保存在一個地方減少了搜索整個項目以查找/修復/替換常量及其值的痛苦。

3]根據實用程序及其功能將相關類組合在一起。

4] UI常數像大小,偏移幀的值(其中需要硬代碼)可以保持在常數

我使用的幾個是

#define MenuPopoverFrame CGSizeMake(278, 550); 
#define LandscapeContentSize @"{{0,0},{719,734}}" 
#define PortraitContentSize @"{{2,0},{765,980}}" 

5]使用IB作爲儘可能多,因爲它給了我們更多的靈活性。

6]在處理調試時,正確的註釋和文檔證明是一種救命。 我發現很容易將鍵聲明爲常量,因爲在多個地方使用它們也增加了出現錯誤的可能性。 EQ鍵名爲@「方法」可以更好地申報爲

#define kMethodKey @"method" 

這很簡單的事情可以節省我的時間在調試時,項目的規模變大。

**從Apple的示例中獲取提示也爲您在保持代碼標準化方面提供了很大的幫助。