由核心图形中的三角函数定义的梯度

时间:2015-06-21 12:50:23

标签: ios swift core-graphics gradient

Apple制作线性和径向渐变非常简单,但是可以通过可定义的函数设置渐变的颜色吗?在我的情况下,我想使对象的填充颜色随着沿x轴的正弦函数而变化。制作png并将它们用作模式并不难,但我只是想知道是否可以制作渐变,其中红色,绿色和蓝色分量沿着某个轴变化,而不是正弦函数。

任何答案都表示赞赏。提前谢谢。

1 个答案:

答案 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)

最终结果如下所示。

Xcode simulator screenshot