私は最初にviewDidLoadの最初のシーンにCAGradientLayer
を作成します。それは、このように挿入されています:正常に動作しますCAGradientLayerを切り替えるには?
self.view.layer.insertSublayer(myCAGradientLayer, atIndex: 0)
を。しかし、今、私はアプリの実行中にグラデーションを変更する必要があります。ユーザーはシーン2で何かを行い、グラデーションが変化するシーン1に戻ります。私は新しいCAGradientLayer
を構築し、上記と同じビューを追加します。
ただし、viewWillAppearを使用すると機能しません。ここで
は一例です:
let gLocations: [Float] = [0.0, 1.0]
let gLayer: CAGradientLayer = CAGradientLayer()
gLayer.colors = [UIColor.yellowColor().CGColor, UIColor.greenColor().CGColor]
gLayer.frame = self.view.bounds
gLayer.locations = gLocations
self.view.layer.insertSublayer(gLayer, atIndex: 0)
viewWillAppearに上記を追加します。次に、さまざまな色を使用して複数の条件に追加します。選択された最初の条件のみが表示されます。他の条件の他の色は表示されません。
は、私は問題の一部は、私がいつもやっていることだと思う:
self.view.layer.insertSublayer(gLayer, atIndex: 0)
そうでない場合は、勾配が他のUIコンポーネントの最上部に表示されます。私はいくつかの異なるグラデーションを使用しています。それらはすべて上記のコードを使用しています。しかし、私はそれらがすべてインデックス= 0に挿入できないと推測しています。
グラデーションを変更する他の方法はありますか?
私はOPにいくつかのサンプルコードを追加しました。 viewWillAppearで異なる色の条件文を使用して数回追加します。別の条件(と色)を切り替えることができる場合は、カウンタを追加します。 – 4thSpace
@ 4thSpace、あなたの問題を正しく理解していれば、グラデーションカラーがあります。ユーザーが別のビューに移動した後、グラデーションカラーを別のビューに変更したい場合は、 –
はい。3つの異なる勾配が関与する。しかし、私が言ったように、最初のものだけが表示されます。 – 4thSpace