我该如何从RGB值获取CGColor?

31

我正在尝试使用Swift创建自定义RGB CGColor 作为UIButton 的边框颜色。 我已经尝试过以下代码,但颜色不可见:


我试图使用Swift创建一个自定义的RGB CGColor,作为一个UIButton的边框颜色。我已经尝试了下面的代码,但是边框颜色并没有显示出来:
var red = UIColor(red: 100.0, green: 130.0, blue: 230.0, alpha: 1.0)
self.layer.borderColor = red.CGColor

有没有直接从 RGB 值创建CGColor的方法?


2
这也让我感到困惑,看着文档,我试图使用CGColor(red: .., green: .., blue: .., alpha: ..)。然而,在仔细重新阅读后,我发现这个构造函数在iOS上不可用。为什么会有这些差异?我该如何编写既可以在Mac上运行又可以在iOS上运行的代码? - Nils
5个回答

82

您需要提供介于0和1.0之间的值。因此,请将RGB值除以255。

更改您的代码为:

var red = UIColor(red: 100.0/255.0, green: 130.0/255.0, blue: 230.0/255.0, alpha: 1.0)
self.layer.borderColor = red.CGColor

9
您可以在Swift 3中将其简化为一行代码:
avLayer.backgroundColor = UIColor.red.CGColor

7

非常感谢。我实际上在文档中找到了那个方法,但是我正在使用iOS。我想知道为什么我不能使用它,但现在你已经明确说明它只适用于OS X。谢谢。 - alionthego

1
UImage *newImage = [self imageWithColor:[UIColor colorWithRed:200/255. green:228/255. blue:194/255. alpha:0.99]];

0
也许你只需要设置borderWidth,默认值为0,因此它不可见:
self.layer.borderWidth = 1.0

如果需要圆角,可以设置cornerRadius...可能会有用的;-)

self.layer.cornerRadius = 4.0

@Shruti 对于你应该传递给 UICcolor(...) 的 CGFloat 值是正确的。 - Matteo Piombo
嗨,谢谢您的回复。我已经设置了边框宽度。上面将值除以255的答案是我要寻找的解决方案。谢谢。 - alionthego

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接