2

假设我有一个UIColor我想在每个视图控制器中使用来为它的标题/导航栏着色。我想知道声明此类财产的最佳方式是什么。我应该将其声明为应用程序委托的成员吗?为全局属性创建一个模型类,并声明一个静态函数+ (UIColor)getTitleColor? 将对象传递UIColor给每个视图控制器?是否有另一种我没有描述的方法,被视为解决此问题的最佳方法?

4

2 回答 2

6

有很多方法可以做到这一点。我喜欢通过在以下位置添加一个类别来做到这一点UIColor

UIColor+MyAppColors.h

@interface UIColor (MyAppColors)

+ (UIColor *)MyApp_titleBarBackgroundColor;

@end

UIColor+MyAppColors.m

#import "UIColor+MyAppColors.h"

@implementation UIColor (MyAppColors)

+ (UIColor *)MyApp_titleBarBackgroundColor {
    static UIColor *color;
    static dispatch_once_t once;
    dispatch_once(&once, ^{
        color = [UIColor colorWithHue:0.2 saturation:0.6 brightness:0.7 alpha:1];
    });
    return color;
}

@end

然后我可以通过导入UIColor+MyAppColors.h任何需要标题栏背景颜色的文件来使用它,并像这样调用它:

myBar.tintColor = [UIColor MyApp_titleBarBackgroundColor];
于 2012-09-10T18:17:56.493 回答
0

通过你正在尝试做的事情,我认为你可以通过使用外观来更容易地做到这一点。您可以为所有不同类型的界面元素分配不同的颜色。检查UIAppearance 协议以获取更多信息。

如果这不是您想要的,那么我建议@rob mayoff 回答:使用类别。

于 2012-09-10T18:23:03.023 回答