4

可能重复:
Objective C 定义 UIColor 常量

我想在我的应用程序中使用几种颜色。除了在每个实例或每个 viewController 中创建 UIColor 之外,还有一种方法可以让我在整个应用程序中使用它。

或者使用 ColourConstants.h 头文件是明智的,我在其中 #define 我想使用的每种颜色

IE

#define SCARLET [UIColor colorWithRed:207.0/255.0 green:47.0/255.0 blue:40.0/255.0 alpha:1];

提前致谢!

4

2 回答 2

24

我会在 UIColor 上使用一个类别。例如:

// In UIColor+ScarletColor.h

@interface UIColor (ScarletColor)

+ (UIColor*)scarletColor;

@end


// In UIColor+ScarletColor.m

@implementation UIColor (ScarletColor)

+ (UIColor*)scarletColor {
    return [UIColor colorWithRed:207.0/255.0 green:47.0/255.0 blue:40.0/255.0 alpha:1];
}

@end

当你想使用颜色时,你只需要这样做:

#import "UIColor+ScarletColor.h"

....

UIColor *scarlet = [UIColor scarletColor];

希望能帮助到你!!

于 2012-04-09T17:12:46.207 回答
2

宏更方便,因为它只在一个地方定义。

但它仍然会在每次使用时创建一个新实例,因为宏只是预处理器的文本替换。

如果你想拥有一个唯一的实例,你必须使用FOUNDATION_EXPORT(这意味着extern)。

在公共 .h 文件中,声明以下内容:

FOUNDATION_EXPORT UIColor * scarlet;

这将告诉编译器该scarlet变量(类型UIColor)将存在于某个点(当程序链接时)。
因此,它将允许您使用它。

然后您需要在 .m 文件中创建该变量。
您不能直接分配它的值,因为它是运行时值,所以只需将其设置为 nil:

UIColor * scarlet = nil;

然后,在您的程序中的某个点(可能在您的应用程序的委托中),设置它的值:

scarlet = [ [ UIColor ... ] retain ];

不要忘记保留它,因为它是一个全局变量,需要在程序的整个生命周期中都存在。

这样,您只有一个实例,可以从任何地方访问。

于 2012-04-09T17:00:41.617 回答