4
Apple已经使得线性和径向梯度变得非常简单,但是可以通过可定义的函数设置梯度的颜色吗?在我的情况下,我想使对象的填充颜色随x轴的正弦函数而变化。使用png作为模式并不难,但我只是想知道是否有可能使渐变中的红色,绿色和蓝色分量沿着某个轴以一个正弦函数变化。由核心图形中的三角函数定义的梯度
任何答案是赞赏。提前致谢。
Apple已经使得线性和径向梯度变得非常简单,但是可以通过可定义的函数设置梯度的颜色吗?在我的情况下,我想使对象的填充颜色随x轴的正弦函数而变化。使用png作为模式并不难,但我只是想知道是否有可能使渐变中的红色,绿色和蓝色分量沿着某个轴以一个正弦函数变化。由核心图形中的三角函数定义的梯度
任何答案是赞赏。提前致谢。
当创建使用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)
最终结果如下所示。
CGGradient只是CGShading的特例,版本,仅允许之类的功能。 https://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_shadings/dq_shadings.html#//apple_ref/doc/uid/TP30001066-CH207-SW15 –