如何从 RGBA 创建 UIColor?
Posted
技术标签:
【中文标题】如何从 RGBA 创建 UIColor?【英文标题】:How do I create a UIColor from RGBA? 【发布时间】:2012-11-04 23:48:53 【问题描述】:我想在我的项目中使用NSAttributedString
,但是当我尝试设置颜色时,它不是标准集(redColor
、blackColor
、greenColor
等)UILabel
以白色显示这些字母。
这是我的这段代码。
[attributedString addAttribute:NSForegroundColorAttributeName
value:[UIColor colorWithRed:66
green:79
blue:91
alpha:1]
range:NSMakeRange(0, attributedString.length)];
我尝试使用 Core Image 框架中的 CIColor
进行着色,但结果相同。
我应该对我的代码进行哪些更改才能以正确的方式执行它?
谢谢大家的回答!
【问题讨论】:
【参考方案1】:您的值不正确,您需要将每个颜色值除以 255.0。
[UIColor colorWithRed:66.0f/255.0f
green:79.0f/255.0f
blue:91.0f/255.0f
alpha:1.0f];
文档状态:
+ (UIColor *)colorWithRed:(CGFloat)red
green:(CGFloat)green
blue:(CGFloat)blue
alpha:(CGFloat)alpha
参数
红色 颜色对象的红色分量,指定为 0.0 到 1.0 之间的值。
绿色 颜色对象的绿色分量,指定为 0.0 到 1.0 之间的值。
蓝色 颜色对象的蓝色分量,指定为 0.0 到 1.0 之间的值。
阿尔法 颜色对象的不透明度值,指定为 0.0 到 1.0 之间的值。
Reference here.
【讨论】:
它工作正常,现在我在犯了这样的错误后感觉自己是个白痴!谢谢! UIColor 中有两个新方法接受 0 到 255 之间的整数值。请在此处查看我的答案:***.com/a/58124535/2631081【参考方案2】:我最喜欢的宏之一,没有任何项目:
#define RGB(r, g, b) [UIColor colorWithRed:(float)r / 255.0 green:(float)g / 255.0 blue:(float)b / 255.0 alpha:1.0]
#define RGBA(r, g, b, a) [UIColor colorWithRed:(float)r / 255.0 green:(float)g / 255.0 blue:(float)b / 255.0 alpha:a]
使用类似:
[attributedString addAttribute:NSForegroundColorAttributeName
value:RGB(66, 79, 91)
range:NSMakeRange(0, attributedString.length)];
【讨论】:
请尽快? 嗨@JaswanthKumar 检查我对Swift
版本的回答。【参考方案3】:
UIColor
使用范围从 0 到 1.0,而不是整数到 255.. 试试这个:
// create color
UIColor *color = [UIColor colorWithRed:66/255.0
green:79/255.0
blue:91/255.0
alpha:1];
// use in attributed string
[attributedString addAttribute:NSForegroundColorAttributeName
value:color
range:NSMakeRange(0, attributedString.length)];
【讨论】:
【参考方案4】:请尝试代码
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0] range:NSMakeRange(0, attributedString.length)];
喜欢
Label.textColor=[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0];
UIColor 的 RGB 分量在 0 到 1 之间缩放,最高不超过 255。
【讨论】:
【参考方案5】:既然@Jaswanth Kumar 问了,这是来自LSwift 的Swift
版本:
extension UIColor
convenience init(rgb:UInt, alpha:CGFloat = 1.0)
self.init(
red: CGFloat((rgb & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgb & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgb & 0x0000FF) / 255.0,
alpha: CGFloat(alpha)
)
用法:let color = UIColor(rgb: 0x112233)
【讨论】:
以上是关于如何从 RGBA 创建 UIColor?的主要内容,如果未能解决你的问题,请参考以下文章