在iOS应用程序中声明全局变量的最佳做法是什么



假设我有一个UIColor,我想在每个视图控制器中使用它来为它的标题/导航栏着色。我想知道申报这样一处房产的最佳方式是什么。我应该以申请代表的身份宣布吗?为全局属性创建一个模型类,并声明一个静态函数+ (UIColor)getTitleColor?是否将UIColor对象传递给每个视图控制器?有没有另一种我没有描述的方法,被认为是实现这一目标的最佳方法?

有很多方法可以做到这一点。我喜欢在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];

根据您正在尝试做的事情,我认为使用外观可以更容易地做到这一点。您可以为所有不同类型的界面元素指定不同的颜色。有关详细信息,请查看UIAppearance协议。

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

相关内容

  • 没有找到相关文章

最新更新