Objective c 在项目中全局声明UIColor

Objective c 在项目中全局声明UIColor,objective-c,ios,xcode,uicolor,Objective C,Ios,Xcode,Uicolor,可能重复: 我想在我的应用程序中使用一些颜色。有一种方法可以在整个应用程序中使用UIColor,而不是在每个实例或每个viewController中创建UIColor 或者使用colorConstants.h头文件来定义我想要使用的每种颜色是否明智 i、 e 提前谢谢 宏更方便,因为它只在一个地方定义 但每次使用它时,它仍然会创建一个新实例,因为宏只是预处理器的文本替换 如果你想拥有一个唯一的实例,你必须使用FOUNDATION\u EXPORT(意思是extern) 在public.h文件中

可能重复:

我想在我的应用程序中使用一些颜色。有一种方法可以在整个应用程序中使用UIColor,而不是在每个实例或每个viewController中创建UIColor

或者使用colorConstants.h头文件来定义我想要使用的每种颜色是否明智

i、 e


提前谢谢

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

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

如果你想拥有一个唯一的实例,你必须使用
FOUNDATION\u EXPORT
(意思是
extern

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

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

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

UIColor * scarlet = nil;
然后,在程序中的某个点(可能在应用程序的委托中),设置其值:

scarlet = [ [ UIColor ... ] retain ];
不要忘了保留它,因为它是一个全局变量,需要在程序的整个生命周期中存在


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

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

希望能有帮助

+1非常直接和简单。应该已经想到了:-)提示:将
#import“UIColor+ScarletColor.h”
放在
Prefix.pch
文件中,您可以在任何地方访问它。不显式导入
#import "UIColor+ScarletColor.h"

....

UIColor *scarlet = [UIColor scarletColor];