【问题标题】: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)

最终结果是这样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多