通过你的问题的文字是真不明白,你要什么样的快捷方式 - 一个单一的颜色,创造的RGBA颜色与值[0..255]
?
DrummerB回答了第一个,Justin Boo第二个。
我想提出一个解决方案,适合两种:
创建类别,可以涵盖
[UIColor colorWith255ValuesWithRed: 128 green: 35 blue: 40 alpha:255]
,一个包装的方法,使用的是现在
- 创建UIColor类的方法,它将UIColor对象存储在一个静态的NSMutableDictionary中,它们的名称和计数器部分,你可以调用如
[UIColor registeredColorWithName:@"activeForegroundColor"]
我写了一个颜色寄存器想法的示例代码:
UIColor + Register。ħ
#import <UIKit/UIKit.h>
@interface UIColor (Register)
+(void)registerColor:(UIColor *)color
forName:(NSString *)name;
+(UIColor *)registeredColorForName:(NSString *)name;
+(void)unregisterColorForName:(NSString *)name;
@end
的UIColor + Register.m
#import "UIColor+Register.h"
@interface UIColor (RegisterPrivate)
+(NSMutableDictionary *)colorRegister;
@end
@implementation UIColor (RegisterPrivate)
+(NSMutableDictionary *)colorRegister
{
static dispatch_once_t once;
static NSMutableDictionary *register_;
dispatch_once(&once, ^{
register_ = [NSMutableDictionary dictionary];
});
return register_;
}
@end
@implementation UIColor (Register)
+(void)registerColor:(UIColor *)color
forName:(NSString *)name
{
[[self colorRegister] setObject:color forKey:name];
}
+(UIColor *)registeredColorForName:(NSString *)name
{
return [[self colorRegister] objectForKey:name];
}
+(void)unregisterColorForName:(NSString *)name
{
[[self colorRegister] removeObjectForKey:name];
}
@end
用法:
寄存器
[UIColor registerColor:[UIColor redColor] forName:@"activeColor"];
[UIColor registerColor:[UIColor grayColor] forName:@"passiveColor"];
访问
[view1 setBackgroundColor:[UIColor registeredColorForName:@"passiveColor"]];
[view2 setBackgroundColor:[UIColor registeredColorForName:@"activeColor"]];
注销
[UIColor unregisterColorForName:@"activeColor"];
'myColor'将有被分配到一个方法或函数的内部,但这肯定比定义看起来像一个常量但实际上是一个调用要好。 –