Ich versuche, einen Farbverlauf zu animieren, sodass sich die Positionen der beiden Farben von links nach rechts verschieben. Das Problem besteht darin, dass nach Abschluss der Animation die Farbverlaufspositionen an ihre ursprüngliche Position zurückspringen.Verhindern, dass CAGradientLayer-Positionen nach der Verwendung von CABasicAnimation zu ursprünglichen Werten zurückkehren
Hier ist mein Spielplatz Code:
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()
Wie kann ich den Reset der Standorte zu verhindern, nachdem die Animation abgeschlossen ist?
Persönlich mag ich die letzte Lösung, weil es einen Abschlussblock hat .. aber es ist alles Vorliebe und Bedürfnisse. Entscheide selbst, was am besten zu dir passt. – Brandon
Ich habe schon die erste Lösung ausprobiert, aber es funktioniert nicht. Ich werde die anderen 2 Lösungen versuchen. Bleib dran ... – DJSK
Letzte Lösung ist die einzige, die funktioniert. Ich werde es als richtig markieren. Vielen Dank! – DJSK