我想在整个应用中使用少量颜色。而不是在每个实例或每个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];
提前感谢!
答案 0 :(得分: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];
希望它有所帮助!!
答案 1 :(得分:2)
宏更方便,因为它只在一个地方定义。
但是每次使用时它仍然会创建一个新实例,因为宏只是预处理器的文本替换。
如果您想拥有一个唯一的实例,则必须使用FOUNDATION_EXPORT
(这意味着extern
)。
在公共.h文件中,声明以下内容:
FOUNDATION_EXPORT UIColor * scarlet;
这将告诉编译器scarlet
变量(类型UIColor
)将在某个时刻(程序链接时)存在。
所以它允许你使用它。
然后你需要在.m文件中创建该变量 您无法直接分配其值,因为它是运行时值,因此只需将其设置为nil:
UIColor * scarlet = nil;
然后,在您的程序中的某个时刻(可能在您的应用程序的委托中),设置其值:
scarlet = [ [ UIColor ... ] retain ];
不要忘记保留它,因为它是一个全局变量,需要在程序的整个生命周期中存活。
这样,您只有一个实例,可以从任何地方访问。