我正在尝试在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会出现这种行为?