如何从 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 swift 从带有图案图像的 nscolor 获取 cgcolor?

如何正确获取 CGColor 的颜色分量

如何将 RGB 转换为 HTML 颜色?

如何从字符串值中获取纬度?

如何从 QMultiMap 中的值中获取键?

如何从 in_addr 值中获取端口?