Ich bin neu in der UI-Programmierung und im Moment versuche ich, den Bildschirm mit einer Geschwindigkeit zu pulsen, die auf der Anzahl von Malen basiert, die der Bildschirm angetippt wurde. Mein Problem ist, dass wenn eine Berührung erkannt wird und die Dauer der Animation verkürzt wird, beginnt die Animation von Anfang an und erzeugt beim Neustart einen weißen Blitz. Wie würde ich die Animation beschleunigen, egal von welchem Punkt, wenn ein Antippen erkannt wird?Wie beschleunige ich eine Animation, während sie bereits mit swift erfolgt?
Mein Code:
class ViewController: UIViewController {
var tapCount: Int = 0
var pulseSpeed: Double = 3
override func viewDidLoad() {
super.viewDidLoad()
counter.center = CGPoint(x: 185, y: 118)
pulseAnimation(pulseSpeed: pulseSpeed)
}
func pulseAnimation(pulseSpeed: Double) {
UIView.animate(withDuration: pulseSpeed, delay: 0, options: [UIViewAnimationOptions.repeat, UIViewAnimationOptions.autoreverse],
animations: {
self.red.alpha = 0.5
self.red.alpha = 1.0
})
}
@IBOutlet weak var red: UIImageView!
@IBOutlet weak var counter: UILabel!
@IBAction func screenTapButton(_ sender: UIButton) {
tapCount += 1
counter.text = "\(tapCount)"
pulseSpeed = Double(3)/Double(tapCount)
pulseAnimation(pulseSpeed: pulseSpeed)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}