我知道类似的问题已经被问到,但没有得到满意的答案。所以我再次加入这个问题。如何创建一个基于主题的应用程序?
根据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