我知道類似的問題已經被問到,但沒有得到滿意的答案。所以我再次加入這個問題。如何創建一個基於主題的應用程序?
根據iphone應用程序中的用戶選擇,我需要改變應用程序的外觀和感覺(彩色字體背景圖像等)。是否有任何標準的方法來實現這一目標?
一個可能的解決方案可以是複製每個主題的xib文件並根據選擇加載它。這是一個好方法嗎?主要是因爲連接xib副本的出口和動作聽起來是一項多餘的任務。
我希望看到有關此疑問的專家建議。 感謝您提前提供任何幫助。
-mia
我知道類似的問題已經被問到,但沒有得到滿意的答案。所以我再次加入這個問題。如何創建一個基於主題的應用程序?
根據iphone應用程序中的用戶選擇,我需要改變應用程序的外觀和感覺(彩色字體背景圖像等)。是否有任何標準的方法來實現這一目標?
一個可能的解決方案可以是複製每個主題的xib文件並根據選擇加載它。這是一個好方法嗎?主要是因爲連接xib副本的出口和動作聽起來是一項多餘的任務。
我希望看到有關此疑問的專家建議。 感謝您提前提供任何幫助。
-mia
對於非XIB路線
顏色:iOS 5的公開全新亮相的API。如果設置tintColor或backgroundColor,大多數UI元素都有選項。很少,甚至是背景圖像。
字體:總是能夠改變,但是你不能對它進行動畫處理。
背景圖像:您的主UIView應該有背景圖像的選項,或者如果失敗,則使用圖案圖像的背景顏色。
實現基於主題的應用程序IOS應用程序(不使用〜xib路徑)的最佳方法。你應該創建一個build.xml文件,它將包含所有主題。你應該保持你的佈局相同,你可以根據用戶的喜好在佈局中改變圖像,風格,字體,語言,視圖。通過這樣做,您不會複製任何代碼,並且您將從應用程序中獲得最佳性能。
抱歉,我不明白你的解釋。你能否再解釋一下。這也不是動態的rt?意味着程序啓動並運行時用戶不能切換主題。 – mia 2012-01-12 04:52:39
正如CodaFI所說,如果您使用的是iOS 5或更高版本,則您已具備主題功能。它的工作原理是這樣的:
將協議<IAppearanceContainer>
添加到類中。
用UI_APPEARANCE_SELECTOR
裝修您打算更改的房產。例如:
@interface UINavigationBar : ... <IAppearanceContainer>
@property(nonatomic,retain) UIColor *tintColor UI_APPEARANCE_SELECTOR;
@end
[[UINavigationBar appearance] setTintColor:[UIColor redColor]];
上面的例子是UINavigationBar
,但它會與任何自定義類的工作。要看到的iOS 6.1已經支持的對象,查看文檔或者運行以下命令:
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/UIKit.framework/Headers
grep -H UI_APPEARANCE_SELECTOR ./* | sed 's/ __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0) UI_APPEARANCE_SELECTOR;//'
讓你想模塊化主題說:
[x appearance] setWhatever:<plist value>]
。這或多或少是來自Amit Vyawahare的小費。我說plist代替了xml,因爲它們更易於閱讀。除非你確實需要,否則不要複製NIB。
這只是根據選擇動態設置顏色。這很好,但我正在尋找一個有效的選項,如主題或樣式,我可以簡單地動態切換主題,同時我不必顯式處理代碼或重複的筆尖。 – mia 2012-01-12 04:50:55
[UIButton setTintColor:[UIColor someColor]];你必須自己處理所有事情。在你稱之爲每個'新風格'的時候,用一些預設的顏色值做一些方法 – CodaFi 2012-01-12 04:52:20