2017-10-04 5 views
0

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?

+0

versuchen, etwas Verzögerung sagen 0,3 Sekunden. – ankit

+0

Gleiches Ergebnis. Segue passiert, Animation nicht. – Adrian

Antwort

3

Nun, es ist nicht animieren, weil ich denke, Sie vergaß, vor dem Aufruf der Erweiterungsmethode zunächst Transformation Wert auf Schaltfläche geben.

myButton.transform = CGAffineTransform(scaleX: 1.2, y: 1.2) 
myButton.animate(duration: 0.25) { _ in 
    self.performSegue(withIdentifier: "mySequeIdentifier", sender: sender) 
} 
+0

Oh Junge ... erschreckend dumme Aufsicht meinerseits. Vielen Dank. – Adrian

+0

Ja manchmal passiert es !!!! genieße Codieren;) – ankit