在项目中全局声明UIColor

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

我想在我的应用程序中使用少量颜色。 而不是在每个实例或每个viewController中创建一个UIColor,我可以通过它在整个应用程序中使用它。

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

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

提前致谢!

我会在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]; 

希望能帮助到你!!

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

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

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

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

 FOUNDATION_EXPORT UIColor * scarlet; 

这将告诉编译器scarlet变量(类型为UIColor )将在某个时刻存在(当程序被链接时)。
所以它允许你使用它。

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

 UIColor * scarlet = nil; 

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

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

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

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