如何为CAGradientLayer提供“位置”

我创建了CAGradientLayer有三种颜色,我需要给每种颜色不同的位置。 例:

 Red = 0 to 50 % Yellow = 51 to 80 % Green = 81 to 100 % 

我尝试过给startPointendPoint但它没有用。 在此处输入图像描述

如果您将以下代码放入Playground,您将获得所需的确切输出:

 let view = UIView(frame: CGRectMake(0,0,200,100)) let layer = CAGradientLayer() layer.frame = view.frame layer.colors = [UIColor.greenColor().CGColor, UIColor.yellowColor().CGColor, UIColor.redColor().CGColor] layer.locations = [0.0, 0.8, 1.0] view.layer.addSublayer(layer) XCPShowView("ident", view: view) 

输出:

在此处输入图像描述

您只需将颜色定义为CGColors数组,并将相同大小的NSNumber为0.0到1.0之间的数组。

不要使用startPointendPoint – 它们用于定义层中显示渐变的位置 – 它与百分比和颜色等没有任何关系。


更新的Swift3版本代码:

 let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 100)) let layer = CAGradientLayer() layer.frame = view.frame layer.colors = [UIColor.green.cgColor, UIColor.yellow.cgColor, UIColor.red.cgColor] layer.locations = [0.0, 0.8, 1.0] view.layer.addSublayer(layer) PlaygroundPage.current.liveView = view