如何从 RGB 值中获取 CGColor?
Posted
技术标签:
【中文标题】如何从 RGB 值中获取 CGColor?【英文标题】:How can I obtain a CGColor from RGB values? 【发布时间】:2015-06-10 13:46:16 【问题描述】:我正在尝试使用 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
?
【问题讨论】:
这也让我感到困惑,查看我尝试使用的文档 CGColor(red: .., green: .., blue: .., alpha: ..) 但是仔细阅读后我看到这个构造函数在 ios 上不可用。为什么会有这些差异?以及如何编写在 Mac 和 iOS 上运行的代码? 【参考方案1】:您必须给出介于 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
【讨论】:
【参考方案2】:也许你只需要设置borderWidth
,默认为0,所以不可见:
self.layer.borderWidth = 1.0
以防万一您可以将cornerRadius
设置为圆角...可能有用 ;-)
self.layer.cornerRadius = 4.0
【讨论】:
@Shruti 关于您应该传递给 UICcolor(...) 的CGFloat
值是正确的
嗨。感谢您的回复。我已经设置了borderWidth。上面将值除以 255 的答案是我正在寻找的解决方案。谢谢。【参考方案3】:
在 Mac OS X 上有 CGColorCreateGenericRGB()
,但在 iOS 上不存在。不过,您可以使用带有适当参数的CGColorCreate
。
self.layer.borderColor = CGColorCreate(CGColorSpaceCreateDeviceRGB(), [1.0, 0.5, 0.5, 1.0])
数组中的值按出现顺序为:红色、绿色、蓝色和 alpha。就像UIColor
:)
https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGColor/#//apple_ref/c/func/CGColorCreate
【讨论】:
非常感谢。我实际上在文档中找到了该方法,但正在使用 iOS。我想知道为什么我无法使用它,但现在您明确表示它仅适用于 os x。谢谢。【参考方案4】:UImage *newImage = [self imageWithColor:[UIColor colorWithRed:200/255. green:228/255. blue:194/255. alpha:0.99]];
【讨论】:
【参考方案5】:您可以在 Swift 3 中将其简化为一行:
avLayer.backgroundColor = UIColor.red.CGColor
【讨论】:
以上是关于如何从 RGB 值中获取 CGColor?的主要内容,如果未能解决你的问题,请参考以下文章