创建具有 4 种颜色和小交叉点的渐变?
Create gradient with 4 colors and small intersections?
这里有很多关于如何创建多色渐变的问题,但我正在努力的是在渐变区域很小的地方创建渐变。例如,我想在视图中显示 4 种颜色,并且我希望颜色之间的 3 个交点具有较小的渐变。
gradientLayer = CAGradientLayer()
gradientLayer.frame = gradientFrame
let locations = [Float](arrayLiteral: 0.3, 0.35, 0.8, 0.85)
gradientLayer.locations = locations.map { NSNumber(value: [=10=]) }
gradientLayer.colors = [UIColor.red.cgColor,
UIColor.orange.cgColor,
UIColor.green.cgColor,
UIColor.gray.cgColor]
layer.insertSublayer(gradientLayer, at: 0)
我在红色和橙色、绿色和灰色之间得到很好的渐变。但是橙色和绿色之间的渐变更大,看起来不对。
我没能解决这个问题。有什么解决办法吗?
在颜色序列中使用绿色两次。红橙绿绿灰。现在你可以在中间有一个大的纯绿色,在它的两边有一个细的过渡。示例:
let locations = [Float](arrayLiteral: 0.3, 0.35, 0.4, 0.8, 0.85)
gradientLayer.locations = locations.map { NSNumber(value: [=10=]) }
gradientLayer.colors = [UIColor.red.cgColor,
UIColor.orange.cgColor,
UIColor.green.cgColor,
UIColor.green.cgColor,
UIColor.gray.cgColor]
这是一般原则;随心所欲地调整它。
这里有很多关于如何创建多色渐变的问题,但我正在努力的是在渐变区域很小的地方创建渐变。例如,我想在视图中显示 4 种颜色,并且我希望颜色之间的 3 个交点具有较小的渐变。
gradientLayer = CAGradientLayer()
gradientLayer.frame = gradientFrame
let locations = [Float](arrayLiteral: 0.3, 0.35, 0.8, 0.85)
gradientLayer.locations = locations.map { NSNumber(value: [=10=]) }
gradientLayer.colors = [UIColor.red.cgColor,
UIColor.orange.cgColor,
UIColor.green.cgColor,
UIColor.gray.cgColor]
layer.insertSublayer(gradientLayer, at: 0)
我在红色和橙色、绿色和灰色之间得到很好的渐变。但是橙色和绿色之间的渐变更大,看起来不对。
我没能解决这个问题。有什么解决办法吗?
在颜色序列中使用绿色两次。红橙绿绿灰。现在你可以在中间有一个大的纯绿色,在它的两边有一个细的过渡。示例:
let locations = [Float](arrayLiteral: 0.3, 0.35, 0.4, 0.8, 0.85)
gradientLayer.locations = locations.map { NSNumber(value: [=10=]) }
gradientLayer.colors = [UIColor.red.cgColor,
UIColor.orange.cgColor,
UIColor.green.cgColor,
UIColor.green.cgColor,
UIColor.gray.cgColor]
这是一般原则;随心所欲地调整它。