【问题标题】:Gradient defined by trigonometric function in core graphics核心图形中三角函数定义的梯度
【发布时间】:2015-06-21 12:50:22
【问题描述】:
Apple 使制作线性和径向渐变变得非常简单,但是可以通过可定义的函数设置渐变的颜色吗?在我的情况下,我想让对象的填充颜色随着 x 轴上的正弦函数而变化。制作 png 并将它们用作图案并不难,但我只是想知道是否可以使用 sinus 函数制作红色、绿色和蓝色分量沿某个轴变化的渐变。
感谢任何答案。提前致谢。
【问题讨论】:
标签:
ios
swift
core-graphics
gradient
【解决方案1】:
当您使用CAGradientLayer 类创建渐变时,您可以使用具有大量颜色的colors 属性,并根据正弦函数改变颜色分量。每对连续颜色之间会有线性插值,但是当颜色(和位置)的数量足够大时,这将不明显。
这是一个绘制在红色和蓝色之间来回变化的正弦渐变的示例。
// Compute the colors using a sine step-size
let samples = 100
var colors = [CGColor]()
for i in 0..<samples {
let component = CGFloat(0.5 + sin(Double(i) / Double(samples - 1) * 4.0 * M_PI) / 2.0)
colors.append(UIColor(red: component, green: 0, blue: 1 - component, alpha: 1).CGColor)
}
// Create the gradient layer
let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.colors = colors
// Install the gradient layer
gradientLayer.frame = self.view.bounds
self.view.layer.insertSublayer(gradientLayer, atIndex: 0)
最终结果是这样的。