我想做这样的事情,但我无法获得合作语法。
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];
我自己定义的颜色与系统定义的颜色完全吻合。
(顺便说一句,我开始更多地考虑 HSB 而不是 RGB,因为我更关注颜色。)
关于预先计算值(value)的更新:我的直觉是它不值得。但如果你真的想要,你可以用静态变量来内存值:
+ (UIColor *)paleYellowColor {
static UIColor *color = nil;
if (!color) color = [UIColor colorWithHueDegrees:60 saturation:0.2 brightness:1.0];
return color;
}
你也可以制作一个宏来做内存。
关于objective-c - 如何定义 UIColor 的常量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2718507/