我想做这样的事情,但我不能得到一个合作的语法.

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;
}

你也可以让一个宏来做记忆.

Objective-c相关问答推荐

目标 C:什么是(id)发件人?

如何在没有 Interface Builder 的情况下创建 Cocoa 接口?

按住自定义 UIButton 时更改深灰色突出显示的 colored颜色 ?

Iphone,获取 NSArray 中的国家/地区列表

更改 UIDatePicker 字体 colored颜色 ?

BSXPCMessage 收到消息错误:连接中断

Container View 好像有 UINavigationBar 一样被下推?

.delegate=self 是什么意思?

有没有一种简单的方法可以将 ISO8601 时间戳转换为格式化的 NSDate?

iOS 7 状态栏与 NavigationBar 冲突

xcode storyboard Container View - 如何访问视图控制器

如何在 iOS 上将图像旋转 90 度?

具有高质量代码的开源 Objective-C 项目?

iPhone - 什么是重用标识符(UITableViewCell)?

委托如何在 Objective-C 中工作?

Electron邮件镇静 iOS 8

iPhone 上 SQLite 的最佳 Cocoa/Objective-C 包装器库

Objective-C:前向类声明

UICollectionView 更新单个单元格

zoom UIView 及其所有子项