私は背景文章勾配を制御するswitch文を持っています。それはうまく動作します(勾配が変化します)。しかし、それは突然変化します。私はこれらのグラデーションが.25の持続時間でお互いに消えるようにしたいと思います。私のコードの試みは以下の通りです。背景制御Swift - animateWithDurationを使用してCAGradientLayerをフェードする
Switchステートメント:私は
extension UIView {
private func prepareGradient() -> CAGradientLayer {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.bounds
gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)
gradientLayer.zPosition = -1
self.layer.addSublayer(gradientLayer)
return gradientLayer
}
func configureGradient(colors:[CGColor]) {
let gradientLayer = prepareGradient()
UIView.animateWithDuration(0.25, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
gradientLayer.colors = colors
}, completion: nil)
}
}
がどのように調整することができますアニメーションの継続時間を試みたところ勾配を制御
switch backgroundInput{
case 50...69:
self.view.configureGradient([gradientColor1, gradientColor2])
case 70...90:
self.view.configureGradient([gradientColor2, gradientColor3])
case 91...110:
self.view.configureGradient([gradientColor3, gradientColor4])
case 111...130:
self.view.configureGradient([gradientColor4, gradientColor5])
case 131...150:
self.view.configureGradient([gradientColor5, gradientColor6])
case 151...170:
self.view.configureGradient([gradientColor6, gradientColor7])
default:
self.view.configureGradient([lightPurple, lightBlue])
}
拡張が これは私の上記のコードを使ってグラデーションレイヤーをフェードアウトさせますか? (無関係な - それは常にサブレイヤの「サブレイヤーを追加」をメモリに悪いのですか?)
はい、常にサブレイヤを追加するのは悪いことです。 1つのグラデーションレイヤーを作成し、そのプロパティーを変更してグラデーションを更新する必要があります。それでも問題が解決したら、新しいコードで質問を更新して修正してください。 –
@robmayoff - Yikes。私はそれをキャッチしてうれしい!ここでの修正は、configureGradient関数からself.layer.addSublayer(gradientLayer)を削除してprepareGradientに移動するという簡単な方法ですか? (上記のコードを編集しました) – Joe