4

我需要编写一个支持主题的 iOS Objective-C 应用程序。这个想法是,通过一些配置控制面板,用户可以根据以下模式选择在我的应用程序中预定义的三个假设主题 {redTheme、greenTheme 或 blackTheme} 之一:

1主题 http://www.timotteo.com.ar/ThemeChart.png

用户甚至可以在查看视图时选择新主题,并且视图会自动重绘(尽管这不是基本功能)。我还希望有一个基本主题(例如 whiteTheme)。主题不仅会自定义视图的背景颜色,还会自定义 UIButtons、UISlider 等的图像。我的问题是:有没有设计模式可以帮助我解决这个问题?或者至少是一些 OOP 概念?任何方向表示赞赏。提前发送

4

3 回答 3

2

基本上,您可以考虑 WinterBoard 用于主题的方法。使您的 UI 元素图像名称统一(例如 buttonBackground.png、statusBar.png 等)并将非图像(纯色)信息存储在 PLIST 文件中,并为每个 UI 控件提供键,例如

<plist>
<dict>
    <key>ButtonBackgroundColor</key>
    <string>#00ff00</string>
    <key>LabelBackgroundColor</key>
    <string>#007fcc</string>
</dict>
</plist>

等等。然后,根据这个模式制作你的主题,在你的应用程序中使用相同的图像名称/颜色键来加载 UI 数据,但基于当前设置(大概存储在 NSUserDefaults 中),从不同的目录加载资源文件.

我希望这会有所帮助。

于 2012-05-17T14:41:49.507 回答
2

从您准备的漂亮图表来看,它看起来很像策略模式(或任何数量的类似模式)。查看更多信息:http ://en.wikipedia.org/wiki/Strategy_pattern

亲切的问候,

于 2012-05-17T14:42:08.840 回答
0

UIAppearance 框架使导航栏和 UIControl 对象的这项工作更容易

https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIAppearance_Protocol/index.html

于 2015-05-27T10:53:34.870 回答