我想做这样的事情,但我不能得到一个合作的语法.
static const UIColor *colorNavbar = [UIColor colorWithRed: 197.0/255.0 green: 169.0/255.0 blue: 140.0/255.0 alpha: 1.0];
我想我可以定义宏,但它们很难看.
我想做这样的事情,但我不能得到一个合作的语法.
static const UIColor *colorNavbar = [UIColor colorWithRed: 197.0/255.0 green: 169.0/255.0 blue: 140.0/255.0 alpha: 1.0];
我想我可以定义宏,但它们很难看.
我喜欢使用类别来扩展类,为这类事情提供新的方法.以下是我今天刚刚写的代码节选:
@implementation UIColor (Extensions)
+ (UIColor *)colorWithHueDegrees:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness {
return [UIColor colorWithHue:(hue/360) saturation:saturation brightness:brightness alpha:1.0];
}
+ (UIColor *)aquaColor {
return [UIColor colorWithHueDegrees:210 saturation:1.0 brightness:1.0];
}
+ (UIColor *)paleYellowColor {
return [UIColor colorWithHueDegrees:60 saturation:0.2 brightness:1.0];
}
@end
现在,在代码中,我可以执行以下操作:
self.view.backgroundColor = highlight? [UIColor paleYellowColor] : [UIColor whitecolor];
我自己定义的 colored颜色 与系统定义的 colored颜色 正好匹配.
(顺便说一句,我开始更多地考虑HSB而不是RGB,因为我更关注 colored颜色 .)
我的直觉是这不值得.但如果你真的想,你可以用静态变量记忆这些值:
+ (UIColor *)paleYellowColor {
static UIColor *color = nil;
if (!color) color = [UIColor colorWithHueDegrees:60 saturation:0.2 brightness:1.0];
return color;
}
你也可以让一个宏来做记忆.