2011-08-23 35 views
5

我被一位客戶問到製作一個「skinnable」應用程序,我真的不知道這意味着什麼。 我瘋狂搜索,我沒有找到明確的答案或例子。如何讓iPhone應用程序「換膚」?

如果有人有這方面的線索,任何提示將不勝感激。

謝謝。

+6

你應該向你的客戶要求澄清! – Pepe

+0

我問。我還沒有得到答覆,但想從外面得到一個想法,幫助我更快地理解。 – jorjap

回答

3

一般來說,這意味着,該應用將允許用戶選擇不同外觀的用戶界面,其中的每一個都會有不同的配色方案,手感等

+0

好的,但如何以編程方式做到這一點?至少有一個大概的想法會很棒。謝謝。 – jorjap

+1

查看http://stackoverflow.com/questions/7151608/what-is-the-recommended-method-of-styling-an-ios-app – Jano

0

對於iPhone應用程序,其中大部分的GUI設計由操作系統提供,您可以通過設置自定義導航欄背景圖像,自定義按鈕圖形,以及不同的字體/大小/權重和空格來實現。確保你與熟悉iPhone GUI的設計師合作(如果你不與設計師密切合作,這將是一場噩夢)。

我最近爲想要高度定製的GUI的客戶提供了一個應用程序:http://itunes.apple.com/us/app/gogoparis/id428497937?mt=8。一個'skinnable'應用程序會有幾個這樣的設置,所以用戶可以選擇幾種不同的整體樣式。 (我希望你的客戶端有一個巨大的設計預算!)

0

這裏我的文章應該可以幫助您開始:

What is the recommended method of styling an iOS app?

如果需要現場主題的變化,在這個例子中,每個主題可以張貼通知時用戶選擇另一個主題(或皮膚) - 然後您可以更新主題實例本身。

或者,您可以爲映射到主題工廠的主題創建標識符(NSCFDictionary)。與主題工廠一起使用的特定視圖的示例標識符可以是字符串MONImageSelectorTableCellThemeIdentifier

爲例經理/工廠負責處理所有主題加載並出售引用主題:

@interface MONThemeManager : NSObject 

//... 

- (MONTheme *)themeForCurrentlySelectedSkinForViewWithIdentifier:(NSString *)identifier; 

//... 

@end 

除此之外,這是很難回答的更詳細你的問題不知道你的要求。皮膚應用的實現可以從簡單到非常非常複雜。祝你好運。

0

這裏已經有一些很好的答案,但是我想補充一點,如果你使用UI工具包,比如Three20 ,你可以像使用CSS一樣使用CSS皮膚。

0

我不知道這是舊的文章,但我想我會分享對此事:)

要進行任何可可應用程序換膚功能,你需要你想到的應用3個方面我一分錢:

1)統一性:通過這個我的意思是,在所有的窗口,視圖(包括按鈕,文本輸入等),你想有一個'標準',將貫穿整個應用程序。這是你需要看的第一件事。雖然iOS和OS X都已經有了'主題',就像蘋果默認的陰影和鋪設方式一樣,你可以重寫這些(參考單個視圖/窗口等等...文檔

2)性能:隨着皮膚等...性能始終是一個問題,當談到編寫自己的drawRect等方法。蘋果代碼已經被優化了,所以你需要密切關注應用程序的性能,而你正在這樣做。很好的例子是:我使用梯度圖像,還是使用NSGradient?這兩者在渲染時都會遇到性能問題,但這是兩者中哪一個更好的問題3)userDefaults:這通常是您將獲得「外觀設置」的區域從。 userDefaults基本上是存儲您通常在偏好窗格中設置的所有信息的位置。

如果我是你,我會考慮它的類參考:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/

此外,這裏使用userDefaults的一個漂亮的例子:

http://mobile.tutsplus.com/tutorials/iphone/nsuserdefaults_iphone-sdk/

希望這有助於!

1

我實際上對我的項目做了什麼。我決定使用多個故事板,讓我更好地控制每個主題的整個用戶界面和用戶體驗。我以編程方式將它們連接在一起,通過一個將它們鏈接在一起的主故事板。這就是我所做的,並且它工作得非常好。性能非常好,同時仍然保持對每個主題的高水平細粒度控制。你甚至可以讓你的標題和實現文件對於單獨的視圖控制器保持一致,只要你保持故事板上的名字相同即可。

因此,例如,我正在開發的一個名爲Jam-mout(音樂播放器)的應用程序有多個高質量主題。 (附圖)。每個主題都有自己的故事板。

相關問題