React Native Linear Gradient:颜色褪色

React Native Linear Gradient: Colors washed out

我正在使用 react-native-linear-gradient 包来形成线性渐变。我在 XD 设计中使用颜色选择器选择了完全相同的颜色,以在我的应用程序中形成相同的渐变。这是我的代码:

<LinearGradient start={{x:0,y:0}} end={{x:1,y:1}} style={StyleSheet.absoluteFill} colors={['#D300B5', '#FF5400']} >...

这些十六进制值与设计的值相同,然而,这里是与设计比较的结果:

颜色明显褪色。我已经检查了不透明度以确保一切都是 100%,渐变上没有任何东西,渐变视图没有延伸到屏幕之外,XD,我的 Mac 和 iPhone X 使用 Display P3 颜色 space.

为什么颜色会褪色?

注意:此解决方案仅 iOS,适用于应用中使用的所有颜色。

在很长一段时间都找不到任何东西之后,我创建了一个 React Native 本身的补丁,因为问题源于 React Native 如何在 RCTConvert.m 中的本机代码中创建颜色本身:

return [UIColor colorWithRed:... green:... blue:...]

colorWithRed 的两次出现(在撰写本文时有两次)切换到 colorWithDisplayP3Red 并重建(不要忘记,因为我们正在更改本机代码,热重载将不起作用)该应用程序有效:颜色现在以 P3 颜色 space 呈现。请注意,此方法会更改您在应用程序中 create/use 的 所有 颜色,因此基本上每种颜色看起来都会更清晰。