Ich versuche, die Redundanz von repetitivem Code zu reduzieren, der in einer App verwendet wird, indem eine Standardanimationsfunktion erstellt wird.UIButton Animationserweiterung
Mein gewünschtes Ergebnis ist eine Animation für eine Schaltfläche mit einem optionalen Beendigungshandler. Hier ist mein Code:
extension UIButton {
func animate(duration: TimeInterval, completion: ((Bool) -> Swift.Void)?) {
UIView.animate(withDuration: duration, delay: 0.0, usingSpringWithDamping: 0.2, initialSpringVelocity: 6.0, options: [], animations: {
self.transform = .identity
}, completion: completion)
}
}
Auf MyViewController
, wenn ich die Animation Methode wie folgt aufrufen, die Segue passiert, aber die Animation nicht:
myButton.animate(duration: 0.25) { _ in
self.performSegue(withIdentifier: "mySequeIdentifier", sender: sender)
}
ich heraus, kommentierte der self.performSegue
die Segue, um sicherzustellen, war nicht fest verkabelt auf dem Storyboard, und verifiziert ist es nicht.
Ich habe auch versucht die Animation Funktion mit diesem Code erklärt:
func animate(duration: TimeInterval, completion: @escaping (Bool)->Void?) {
UIView.animate(withDuration: duration, delay: 0.0, usingSpringWithDamping: 0.2, initialSpringVelocity: 6.0, options: .allowUserInteraction, animations: {
self.transform = .identity
}, completion: completion as? (Bool) -> Void)
}
diesen Code verwenden, geschieht nichts. Nicht einmal ein Unfall.
Vielen Dank für das Lesen. Ich begrüße Ihre Vorschläge zu: Wo liegt mein Fehler?
versuchen, etwas Verzögerung sagen 0,3 Sekunden. – ankit
Gleiches Ergebnis. Segue passiert, Animation nicht. – Adrian