加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 用于设置RGB颜色的宏比UIColor好吗?

发布时间:2020-12-15 01:45:55 所属栏目:百科 来源:网络整理
导读:我的头文件中有这个宏: #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue 0xFF0000) 16))/255.0 green:((float)((rgbValue 0xFF00) 8))/255.0 blue:((float)(rgbValue 0xFF))/255.0 alpha:1.0] 我在我的.m文件中使用此
我的头文件中有这个宏:

#define UIColorFromRGB(rgbValue) 
        [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 
                        green:((float)((rgbValue & 0xFF00) >> 8))/255.0 
                         blue:((float)(rgbValue & 0xFF))/255.0 
                        alpha:1.0]

我在我的.m文件中使用此类似的东西:

cell.textColor = UIColorFromRGB(0x663333);

所以我想问一下每个人都这样更好还是我应该使用这种方法:

cell.textColor = [UIColor colorWithRed:66/255.0
                                 green:33/255.0
                                  blue:33/255.0
                                 alpha:1.0];

哪一个更好的方法?

解决方法

中间地带可能是您的最佳选择.您可以定义常规C或Objective-C函数来执行宏现在正在执行的操作:

// As a C function:
UIColor* UIColorFromRGB(NSInteger rgbValue) {
    return [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0
                           green:((float)((rgbValue & 0xFF00) >> 8))/255.0
                            blue:((float)(rgbValue & 0xFF))/255.0
                           alpha:1.0];
}

// As an Objective-C function:
- (UIColor *)UIColorFromRGB:(NSInteger)rgbValue {
return [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0
                       green:((float)((rgbValue & 0xFF00) >> 8))/255.0
                        blue:((float)(rgbValue & 0xFF))/255.0
                       alpha:1.0];
}

但是,如果您决定坚持使用宏,则应将括号放在rgbValue的任何位置.如果我决定用你的宏调用:

UIColorFromRGB(0xFF0000 + 0x00CC00 + 0x000099);

你可能会遇到麻烦.

最后一点代码当然是最具可读性的,但可能是最不便携的 – 你不能简单地在你的程序中的任何地方调用它.

总而言之,我建议将宏重构为一个函数并将其保留在该函数中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读