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 –