UIColor colorWithDisplayP3RGBA转换为CGColor失去宽色域

时间:2018-06-11 20:39:22

标签: ios objective-c uicolor color-space cgcolor

我正在尝试在CAGradientLayer中使用在p3颜色空间中创建的两个UIColors,但是当从UIColors获取.CGColor时,颜色显示为静音(它们显然被剪切到标准色域)。

从UIColor获取CGColor并保留P3的额外范围的正确方法是什么?

以下代码:

gradientColor1 = [UIColor colorWithDisplayP3Red:255.0/255.0 green:146.0/255.0 blue:226.0/255.0 alpha:1.0];
gradientColor2 = [UIColor colorWithDisplayP3Red:248.0/255.0 green:254.0/255.0 blue:190.0/255.0 alpha:1.0];
// these colors look lovely when used as backgrounds for UIViews etc.

gradient.frame = bgColorView.bounds;
gradient.colors = @[(id)gradientColor1.CGColor , (id)gradientColor2.CGColor];

gradient.startPoint = CGPointMake(0.5, 0.41);
gradient.endPoint = CGPointMake(0.5, 0.84);

// the gradient layer now shows muted colors :(
[bgColorView.layer insertSublayer:gradient atIndex:0];

编辑:

如果我将CGColor设置为CALayer的背景颜色,则会准确呈现颜色,因此问题似乎会出现在CAGradientLayer中。我尝试只为CAGradientLayer的colors属性设置一种颜色,并且在sRGB颜色空间中渲染不正确。

为什么CAGradientLayer会出现这种行为?

0 个答案:

没有答案