我有三个UIButtons
,每个都有不同的(UIColor)backgroundColor
;例如,一个backgroundColor
的{{1}}是蓝色,一个是粉红色,另一个是橙色。当我点击每个UIButton
时,我想直接从它的UIButton
属性中获取确切的RGB(红色,绿色,蓝色)颜色值。 (例如,如果我点击粉红色backgroundColor
的{{1}},我将得到返回的RGB值 - R:255,G:0,B:128。)另一种解释方法是,我想将UIButton
的UIColor backgroundColor
转换为UIColor RGB值。
在Swift中,提取UIButton
' s backgroundColor
的RGB(红色,绿色,蓝色)颜色值的最简单,最有效的代码是什么,然后显示结果在UIButton
?
答案 0 :(得分:3)
您的任务由三部分组成:
UIButton
获取其背景颜色,UIColor
获取其RGB组件第一项任务很简单:将sender
添加到处理点击的方法中。第二项任务也很简单 - 您只需访问backgroundColor
属性即可。最后,要获取需要调用getRGB
的组件。
@IBAction func mainButton(button: UIButton) {
let bgColor:UIColor = button.backgroundColor!
var r : CGFloat = 0
var g : CGFloat = 0
var b : CGFloat = 0
var a: CGFloat = 0
if bgColor.getRed(&r, green: &g, blue: &b, alpha: &a) {
... r, g, b, and a represent the component values.
}
}
请注意,以MVC方式执行此操作会更简单,即通过检索预先存储在模型中的组件。将按钮标记设置为0,1和2,创建查找表,并使用它来执行任务:
let componentForTag: Int[][] = [[255, 0, 128], [128, 0, 0],[128, 128, 0]]
...
@IBAction func mainButton(button: UIButton) {
let components = componentForTag[button.tag]
// That's it! components array has the three components
}