首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CGColor到UIColor转换

CGColor到UIColor转换
EN

Stack Overflow用户
提问于 2022-01-13 20:38:53
回答 1查看 301关注 0票数 3

当我初始化一个CGColor并将其转换为UIColor时,它不会以与用相同值初始化的UIColor相同的方式呈现。如何在CGColor和UIColor之间进行转换并保持相同的外观?

这段代码产生了两种稍微不同的颜色(见屏幕截图),尽管我希望颜色是相同的:

代码语言:javascript
运行
复制
self.view.backgroundColor = UIColor(red: 19/255.0, green: 25/255.0, blue: 28/255.0, alpha: 1.0)

let myCGColor = CGColor(red: 19/255.0, green: 25/255.0, blue: 28/255.0, alpha: 1.0)
self.secondView.backgroundColor = UIColor(cgColor: myCGColor)

顶部: UIColor /底部: CGColor->UIColor

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-13 21:08:08

这是因为CGColor初始化程序使用了不同的颜色空间。UIColor使用extendedSRGB,而CGColor使用通用RGB。

如果要获得相同的颜色,则在初始化CGColor时需要指定相同的颜色空间:

代码语言:javascript
运行
复制
let cgColor = CGColor(colorSpace: .init(name: CGColorSpace.extendedSRGB)!, components: [19.0/255, 25.0/255, 28.0/255, 1.0])!

对于iOS13+或macOS10.15+,您可以使用init(srgbRed:green:blue:alpha:)初始化程序:

代码语言:javascript
运行
复制
let cgColor = CGColor(srgbRed: 19/255, green: 25/255, blue: 28/255, alpha: 1)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70702834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档