什么是皮肤(iPhone)应用程序的良好设计模式?

时间:2011-06-24 13:53:10

标签: iphone uikit xib skin

我在XIB中构建了所有漂亮的按钮和东西,远远不够,我突然意识到人们会为低质量的笔记本电脑支付200美元以上“因为它是粉红色的!”但我离题了。

我需要以某种方式集中控制我的应用程序的颜色方案,并在运行中更改颜色。我有几个想法,比如可能是单个“主题”对象,其中包含几个符合kvo标准的属性,包含主题颜色和字体,然后让视图控制器“监听”更改,并在主题更改时重新绘制所有内容。

到目前为止的问题:我需要一个指向每个UI对象的指针,包括像表视图单元格这样的东西 - 这看起来很痛苦。另一种可能性是将我所有的主题UI对象子类化,也许让他们自己注册为观察者,但这让我想知道这需要的开销,也许KVO甚至不是去这里的方式,我不是知道。

所以我想知道是否有人可以分享他们过去所做的事情,什么有效以及什么导致了大问题?

谢谢!

更新

我最终选择了一个名为SkinDispatcher的单例对象,它只包含许多UIView子类要观察的属性。然后我制作了快速而又脏的UILabel,UIButton,UITextField子类,以及我碰巧使用的任何其他东西。

这些子类每个都查找了它们的标签号,并用它来注册awakeFromNib中适用的字体和颜色的更改。

接下来,我创建了一个专门用于加载样式的类,它实际上打开了一个plist文件,其中包含包含字体名称和R | G | B | A颜色的键,读入它们并将它们设置为SkinDispatcher中的适用属性,由密钥名称确定。最后一步(尚未尝试)是在StandardUserDefaults键上为皮肤设置一个观察者,为该想法设置回答者的道具。

1 个答案:

答案 0 :(得分:0)

您已经提到了一种可能的方法,即使用KVO。另一种可能性是注册特定通知,并在通知到达视图控制器时做出相应的反应。