objective-c - 如何定义 UIColor 的常量值?

标签 objective-c cocoa-touch constants uicolor

我想做这样的事情,但我无法获得合作语法。

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/

相关文章:

ios - 尝试在 View 不在窗口层次结构中的 UIViewController 上呈现 UIViewController

ios - 具有 '-' 字符的字符串在 iOS 的 drawrect 方法中未正确绘制

iphone - 如何更改状态栏的颜色

ios - 更新行高后 UITableView 重复部分标题

ios - 选择单元格时如何获取节标题 View 的标题

java - Java类中常量的使用

c++ - 如何创建 const boost::iterator_range

c++ - 非成员函数是否可以返回 const 值?

ios - 在 UITextView 中选择特定文本以触发 segue

ios - 在自定义 UICell 中获取 UIImage 的框架在 iOS8.3 中使用自动布局