2012-03-24 64 views
1

我已經瞭解到,在iOS 5中,可以使用外觀對標記爲UI_APPEARANCE_SELECTOR的屬性進行樣式設置。例如[[UINavigationBar外觀] setTintColor:....]。但是,我似乎無法對所有元素進行樣式設計。例如,UIButton沒有標記爲UI_APPEARANCE_SELECTOR的屬性,因此我無法使用上述技術對其進行設置。如何全局樣式不支持外觀的元素

我的問題是:當我無法使用外觀時,我如何在全球範圍內最好地設計樣式元素(所有外觀都在應用程序中)?

現在我已經定義了一些顏色,字體,陰影偏移等,我在我的代碼中使用了許多不同的地方。這使我可以改變很多元素的外觀和行爲,但它仍然不允許我只用一行代碼來設置某個對象的所有實例。

編輯

在缺乏更好的解決方案,我已經創造了多項categories簡單方法如下所示:

+ (UIButton *)customLabelWithFrame:(CGRect)frame andText:(NSString *)text; 

而且我發現 - 與所描述的類別組合 - stretchable images很好,很有用。

通過以上我能在全球十歲上下的方式的風格,但我不滿意的結果,我還是希望能找到一個更好的解決方案

+0

我發現一些沒有用UI_APPEARANCE_SELECTOR標記的東西可以和UIAppearance一起使用......例如,一些UIView屬性。我不會建議這是一個很好的答案,因爲它可能會破壞任何發行版,但我發現在這種情況下,邏輯勝過了文檔。 – 2012-04-10 16:09:29

+0

有趣。但我同意這可能不是最合適的方式。 – 2012-04-11 05:59:19

回答

0

標準子類或工廠類怎麼樣,就像你自己提到的那樣!? 對於我自己使用工廠類的按鈕。

+0

不同UI元素的工廠已經定義了我的想法。也許我太懶惰了,尋找容易的東西,需要不切實際的少量代碼...... – 2012-04-11 06:00:25

0

我覺得一個非常好的解決方案是在Android設計界面的方式。 Android依靠XML文件來定義用戶界面。事實上,我正在研究一個圖書館,目的是讓我正在開展的項目具有相同的功能。它仍然是一個正在進行/實驗中的工作,因此非常雜亂的代碼(已被警告!),但它可能會給你一些想法。

一個例子項目可以在這裏下載:通過添加控件http://dl.dropbox.com/u/6487838/WSLayoutManager.zip

實驗了一下與XML文件。創建自定義控件類,並從XML文件等實例化它們......這很有趣的東西:)

+0

感謝您的答案,提供了一個不錯的選擇。我已經下載了你的示例項目,它看起來很有趣。不過,我一直在使用WPF和XAML文件,而且我更喜歡IB方式,它以某種方式與我的元素進行編程式相結合,我正在尋求改進。 – 2012-04-11 06:03:55