2015-12-21 128 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