UIColor colorWithDisplayP3RGBA конвертировать в CGColor теряет широкую гамму - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь использовать два UIColors, созданные в цветовом пространстве p3 в CAGradientLayer, однако при получении .CGColor от UIColors цвета выглядят приглушенными (они явно обрезаются до стандартной гаммы).

Как правильно получить CGColor от UIColor и сохранить дополнительный диапазон 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, и он неправильно отображается в цветовом пространстве sRGB.

Почему CAGradientLayer демонстрирует такое поведение?

...