2015-12-21 16 views
7

私はCAGradientLayerを3色用意して作成しました。 例:CAGradientLayerに "場所"を与える方法

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

私はstartPointendPointを与えると試してみましたが、それはうまくいきませんでした。 enter image description here

+0

正確にあなたは苦労していますか?レイヤーには、あなたのために使うべき色と位置の2つのプロパティがあります。どの言語がbtwですか? – luk2302

+0

あなたの「例」が明確ではない、正確に0%-50%、51%-80%、81%-100%という意味を説明し、使用したコードを追加して、誰かがあなたに問題を示すことができるようにします。ドキュメンテーションを引用することです。 –

+0

グラデーションレイヤーの色は、このようなパーセンテージでなければなりません。デフォルトでは、3つの色すべてが、変更したいと思うように均等に配分されます。私は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の間の同じサイズのNSNumberの配列を含む。

いけない、そのために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

関連する問題