swift - 如何在 Swift 中将 Color Literal 转换为 cgColor?
问题描述
var CodeBackground = #colorLiteral(red: 0.1294117647, green: 0.1294117647, blue: 0.1960784314, alpha: 1)
cells?.layer.borderColor = //... how can i set this color literal to cgColor?
据我所知,如何在 Swift 中将该 UIColor 转换为 cgColor
例如
UIColor.black.cgColor
宾果游戏,但是 Swift 中的颜色文字到 cgColor 呢?
谢谢你。
解决方案
- 作为,您已经知道使用
colorLiteral
as的更简单方法cgcolor
,我将跳到另一种方法...... 为此,您需要一个自定义函数,它从 中获取颜色值(红色、绿色、蓝色)
colorLiteral
,如下所示extension UIColor { func rgb() -> (red:Int, green:Int, blue:Int, alpha:Int)? { var fRed : CGFloat = 0 var fGreen : CGFloat = 0 var fBlue : CGFloat = 0 var fAlpha: CGFloat = 0 if self.getRed(&fRed, green: &fGreen, blue: &fBlue, alpha: &fAlpha) { let iRed = Int(fRed * 255.0) let iGreen = Int(fGreen * 255.0) let iBlue = Int(fBlue * 255.0) let iAlpha = Int(fAlpha) _ = (iAlpha << 24) + (iRed << 16) + (iGreen << 8) + iBlue return (red:iRed, green:iGreen, blue:iBlue, alpha:iAlpha) } else { // Could not extract RGBA components: return nil } } } //It's more convenient to use function in `UIColor` extension
现在,创建此函数后,您可以转换
colorliteral
为cgColor
如下...let CodeBackground = #colorLiteral(red: 0.1294117647, green: 0.1294117647, blue: 0.1960784314, alpha: 1) let rgblit = CodeBackground.rgb() let Converted_cgColor = CGColor(srgbRed: CGFloat(integerLiteral: rgblit!.red), green: CGFloat(integerLiteral: rgblit!.green), blue: CGFloat(integerLiteral: rgblit!.blue), alpha: CGFloat(integerLiteral: rgblit!.alpha))
可以直接使用
Converted_cgColor
likecells?.layer.borderColor = Converted_cgColor
希望能帮助到你
推荐阅读
- sql-server - 如何从 SQL Server 中的两个表中返回值?
- php - Ajax 从 JS 到 PHP(执行 sql 请求)然后从 PHP 到 JS
- ssas - 是否可以在 SSAS 表格模型中隐藏属性层次结构的(全部)级别
- angular - 清除表单时如何重置日期字段
- hadoop - 作为 oozie 操作的一部分,如何检查 hdfs 目录的累积大小?
- pyspark - 如何从驱动器中读取 zip 文件
- selenium - 将 GOCD 与 Selenium BDD 框架一起使用
- spring-mvc - 如何使用 ConcurrentWebSocketSessionDecorator 通过 websocket 发送我的消息
- commercetools - 为什么项目中不支持语言环境?
- deployment - 如何将基于 pytorch 的 GAN 模型部署到 android