如何正确地从 RGB 值初始化 UIColor?
Posted
技术标签:
【中文标题】如何正确地从 RGB 值初始化 UIColor?【英文标题】:How to initialize UIColor from RGB values properly? 【发布时间】:2011-12-22 20:39:39 【问题描述】:我正在开发一个使用各种颜色的 iPhone 应用程序。当用户选择特定颜色按钮时,我相应地设置绘图颜色。我得到了一些颜色,但在大多数情况下,我得到了白色。
这是我的代码:
-(IBAction)colorSelected:(UIButton *)sender
switch (sender.tag)
case 1:
self.drawcolor= [UIColor colorWithRed:200 green:191 blue:231 alpha:1];
break;
case 2:
self.drawcolor= [UIColor colorWithRed:163 green:73 blue:164 alpha:1];
break;
case 3:
self.drawcolor= [UIColor colorWithRed:112 green:146 blue:76 alpha:1];
break;
case 4:
self.drawcolor= [UIColor colorWithRed:63 green:72 blue:204 alpha:1];
break;
case 5:
self.drawcolor= [UIColor colorWithRed:153 green:217 blue:234 alpha:1];
break;
case 6:
self.drawcolor= [UIColor colorWithRed:0 green:162 blue:232 alpha:1];
break;
case 7:
self.drawcolor= [UIColor colorWithRed:181 green:230 blue:29 alpha:1];
break;
case 8:
self.drawcolor= [UIColor colorWithRed:34 green:177 blue:76 alpha:1];
break;
case 9:
self.drawcolor= [UIColor colorWithRed:239 green:228 blue:176 alpha:1];
break;
case 10:
self.drawcolor= [UIColor colorWithRed:255 green:201 blue:0 alpha:1];
break;
case 11:
self.drawcolor= [UIColor colorWithRed:255 green:201 blue:14 alpha:1];
break;
case 12:
self.drawcolor= [UIColor colorWithRed:237 green:28 blue:36 alpha:1];
break;
case 13:
self.drawcolor= [UIColor colorWithRed:255 green:127 blue:39 alpha:1];
break;
case 14:
self.drawcolor= [UIColor colorWithRed:255 green:174 blue:201 alpha:1];
break;
case 15:
self.drawcolor= [UIColor colorWithRed:185 green:122 blue:87 alpha:1];
break;
case 16:
self.drawcolor= [UIColor colorWithRed:136 green:0 blue:21 alpha:1];
break;
case 17:
self.drawcolor= [UIColor colorWithRed:195 green:195 blue:195 alpha:1];
break;
case 18:
self.drawcolor= [UIColor colorWithRed:127 green:127 blue:127 alpha:1];
break;
case 19:
self.drawcolor= [UIColor colorWithRed:255 green:255 blue:255 alpha:1];
break;
case 20:
self.drawcolor= [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
break;
default:
break;
self.preColor=self.drawcolor;
self.lineWidth=self.prelineWidth;
谁能告诉我我做错了什么? 苏米特
【问题讨论】:
我偶然发现了一个不错的实用程序colorcode.globalmaverick.com,它可以直接从十六进制颜色代码或 RGB 中为您提供 Objecive-c 和快速可用的代码。 【参考方案1】:这些值在0.0
到1.0
范围内。
例如除以255.
,但请记住小数点,以便得到浮点除法而不是整数除法。
喜欢
selectedColor = [UIColor colorWithRed:14.0/255.0 green:114.0/255.0 blue:199.0/255.0 alpha:1];
【讨论】:
为了扩展 Mats 的答案,这里有一个例子: self.drawcolor =[UIColor colorWithRed:14.0/255.0 green:114.0/255.0 blue:199.0/255.0 alpha:1];【参考方案2】:Swift 的务实方法。
extension UIColor
convenience init(rgbColorCodeRed red: Int, green: Int, blue: Int, alpha: CGFloat)
let redPart: CGFloat = CGFloat(red) / 255
let greenPart: CGFloat = CGFloat(green) / 255
let bluePart: CGFloat = CGFloat(blue) / 255
self.init(red: redPart, green: greenPart, blue: bluePart, alpha: alpha)
【讨论】:
【参考方案3】:你有几个选择
代码
CGFloat red = 16.0;
CGFloat green = 97.0;
CGFloat blue = 5.0;
CGFloat alpha = 255.0;
UIColor *color = [UIColor colorWithRed:(red/255.0) green:(green/255.0) blue:(blue/255.0) alpha:(alpha/255.0)];
Interface Builder 的颜色选择器插件
Panic 有一个不错的颜色选择器,它与 IB 配合得很好:http://panic.com/~wade/picker/
Xcode 插件
这个为您提供了一个用于选择颜色的 GUI:http://www.youtube.com/watch?v=eblRfDQM0Go
Pod 和库
有一个不错的 pod,名为 MPColorTools
: https://github.com/marzapower/MPColorTools
【讨论】:
【参考方案4】:这是一种方法,您可以轻松地将其转换为 UIColor 上的类别,该方法允许您根据 0 - 255 的 RGBA 值指定颜色。
+ (UIColor *)colorFromRGBAWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha
return [UIColor colorWithRed:red/255.0 green:green/255.0 blue:blue/255.0 alpha:alpha/255.0];
如果你让它成为 UIColor 类别扩展,你可以像这样使用它:
UIColor *myAwesomeColor = [UIColor colorFromRGBAWithRed:48 green:119 blue:167 alpha:255];
【讨论】:
【参考方案5】:在 Swift 中,您可以轻松设置背景颜色,例如像这样的单元格:
cell.backgroundColor = UIColor.init(red: 14.0/255.0, green: 114.0/255.0, blue: 199.0/255.0, alpha: 1)
:-)
【讨论】:
【参考方案6】:(ContentView.Layer.BorderColor) //CG Object
= UIColor.LightGray.CGColor;
【讨论】:
请编辑更多信息。不建议使用纯代码和“试试这个”的答案,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。以上是关于如何正确地从 RGB 值初始化 UIColor?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Swift 中的 UIColor 获取 RGB 代码(INT)[重复]