ios - 使用单例创建基本样式助手类

标签 ios objective-c singleton uicolor

我是 objective-c 的新手,我有一个架构或设计模式的问题。我正在构建一个 ios 应用程序,并且像大多数 ios 应用程序一样,它使用各种颜色、字体、图案等。也许我目前编写的代码不正确,但我发现自己重写了颜色设置等内容。结果,更改颜色变成了在代码中查找所有颜色设置、重写它们等的练习。对我来说似乎有点低效。

例如,我在我的应用中的多个地方使用了深红色。我倾向于相当频繁地编写 [UIColor colorWithRed...] 方法。但是,我很好奇创建一个返回我的自定义颜色(作为 UIColor)的单例是否是“模块化我的样式包”的合理方法。因此我可以写这样的东西

[label setTextColor:[[MyStyleSingletonClass sharedStyler] myDarkRed]];

因此,如果设计人员突然希望 myDarkRed 更暗一些,我只需更改一次即可在整个应用程序中运行。显然,风格和用户体验比颜色更重要,但我很好奇这种方法是否有意义,或者我是否为将来的问题做好了准备。或者也许这种能力已经存在于 objective-c 中,而我忽略了这一点。提前致谢。

最佳答案

我认为解决此类问题的更好方法是 UIColor 本身的一类类方法。我经常为具有大量自定义颜色的项目编写颜色类别。

像这样:

// UIColor+AppAdditions.h
@interface UIColor (AppAdditions)

+ (UIColor *)myDarkRed;

@end

// UIColor+AppAdditions.m

#import "UIColor+AppAdditions.h"

@implementation UIColor (AppAdditions)

+ (UIColor *)myDarkRed
{
    return [UIColor colorWithRed:0.1 green:0.0 blue:0.0 alpha:1.0];
}

@end

这样你就不需要一个完整的 Singleton 并且它更便携,因为 Singleton 可以做其他事情。你可以像这样干净地访问你的颜色:

[label setTextColor:[UIColor myDarkRed]];

注意

正如 Rob 和 Paul 所提到的。最好适本地命名它们。我取了你的名字,但最好根据它们的用途专门命名它们,并遵循前缀和后缀等约定。

关于ios - 使用单例创建基本样式助手类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15434975/

相关文章:

iphone - 为单个设备上的多个用户自动重新授权 Facebook

iphone - 在 iOS 中向用户公开 .sqlite 文件 - 最佳实践?

objective-c - Swallow 无法识别来自 NSInspiration 前向调用调用的选择器异常

ios - 使用 dispatch_async 或 performSelectorOnMainThread 在主线程上执行 UI 更改?

ios - 从 Collection View Xcode 中删除 Collection View Cell

scala - val 或 object 表示不可变的最终单例对象

ios - 当我改变v​​iewController时viewWillDisappear出现错误/停止播放声音

ios - 第一次使用 MKMapView 的问题

ios - 在 Swift 中使用单例循环

php - 单例、传递对象、使用静态、返回错误还是全局变量?