0
2つの色の位置が左から右に移動するようにグラデーションアニメーションを作成しようとしています。アニメーションが完了すると、勾配の位置が元の位置に戻ります。ここでCABasicAnimationを使用した後、CAGradientLayerの位置が元の値に戻らないようにします。
は私の遊び場コードです:
import UIKit
import PlaygroundSupport
class MyViewController : UIViewController {
let gradientLayer: CAGradientLayer = {
let layer = CAGradientLayer()
layer.colors = [ UIColor.red.cgColor, UIColor.blue.cgColor ]
layer.locations = [0.0, 0.5]
layer.startPoint = CGPoint(x: 0.0, y: 1.0)
layer.endPoint = CGPoint(x: 1.0, y: 1.0)
return layer
}()
override func viewDidLoad() {
super.viewDidLoad()
view.layer.addSublayer(gradientLayer)
gradientLayer.frame = view.bounds
let gradientChangeAnimation = CABasicAnimation(keyPath: "locations")
gradientChangeAnimation.duration = 1
gradientChangeAnimation.toValue = [0.5, 1.0]
gradientLayer.add(gradientChangeAnimation, forKey: nil)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
gradientLayer.frame = view.frame
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()
アニメーションが完了した後、私は場所のリセットを防ぐにはどうすればよいですか?
個人的には、私は最後の解決策が好きです。なぜなら、それは完了ブロックを持っているからです。しかし、それはすべて好みのものです。 – Brandon
私は最初の解決策を試しましたが、うまくいきません。私は他の2つのソリューションを試してみましょう。お待ちください... – DJSK
最後の解決策は動作する唯一のソリューションです。それを正しいものとしてマークします。ありがとう! – DJSK