2015-12-21 125 views
7

我创建了CAGradientLayer有三种颜色,我需要给每个颜色不同的位置。 例子:如何给CAGradientLayer“位置”

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

我试图与给startPointendPoint,但没有奏效。 enter image description here

+0

究竟你在哪里挣扎?该图层有两个属性“颜色”和“位置”,应该对您有用。什么语言btw? – luk2302

+0

您的“示例”不清楚,请解释0%-50%,51%-80%和81%-100%的含义,并添加您使用的代码,以便有人可以向您显示问题,否则我们只能做是引用文档。 –

+0

渐变图层上的颜色应该是这样和那样的百分比,默认情况下,所有三种颜色将均匀分布,我想要更改。我正在使用Objective-C。 谢谢。 –

回答

16

如果你把下面的代码放到一个游乐场,你会得到的确切所需的输出:

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) 

对外输出:

enter image description here

您只需定义颜色的CGColors数组以及相同大小的阵列,每个阵列的大小在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 
+0

谢谢,它解决了我的问题。 –

+1

@luk如果我想要一个使用位置数组的水平渐变怎么办? – abhi1992

+1

感谢您的回放@ luk2302,我们可以一起使用起点,终点和位置来制作水平渐变。 – abhi1992