web-dev-qa-db-ja.com

CAGradientLayerに「場所」を与える方法

私は3色のCAGradientLayerを作成しました。各色に異なる場所を与える必要があります。例:

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

startPointendPointを指定して試しましたが、うまくいきませんでした。 enter image description here

16
Sunil Rao

次のコードを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)

出力:

enter image description here

色をCGColorsの配列、および同じサイズのNSNumbersの配列としてそれぞれ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
27
luk2302