当我初始化一个CGColor并将其转换为UIColor时,它不会以与用相同值初始化的UIColor相同的方式呈现。如何在CGColor和UIColor之间进行转换并保持相同的外观?
这段代码产生了两种稍微不同的颜色(见屏幕截图),尽管我希望颜色是相同的:
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
发布于 2022-01-13 21:08:08
这是因为CGColor初始化程序使用了不同的颜色空间。UIColor使用extendedSRGB,而CGColor使用通用RGB。
如果要获得相同的颜色,则在初始化CGColor时需要指定相同的颜色空间:
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:)
初始化程序:
let cgColor = CGColor(srgbRed: 19/255, green: 25/255, blue: 28/255, alpha: 1)
https://stackoverflow.com/questions/70702834
复制相似问题