2011-08-23 34 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(音乐播放器)的应用程序有多个高质量主题。 (附图)。每个主题都有自己的故事板。

相关问题