Apple制作线性和径向渐变非常简单,但是可以通过可定义的函数设置渐变的颜色吗?在我的情况下,我想使对象的填充颜色随着沿x轴的正弦函数而变化。制作png并将它们用作模式并不难,但我只是想知道是否可以制作渐变,其中红色,绿色和蓝色分量沿着某个轴变化,而不是正弦函数。
任何答案都表示赞赏。提前谢谢。
答案 0 :(得分:-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)
最终结果如下所示。