Swift-UIView animateWithDuration Abschluss Schließung sofort aufgerufen
Erwarte ich die Fertigstellung der Schließung auf diese UIView animation aufgerufen werden nach der angegebenen Dauer, aber es scheint zu brennen sofort...
UIView.animateWithDuration(
Double(0.2),
animations: {
self.frame = CGRectMake(0, -self.bounds.height, self.bounds.width, self.bounds.height)
},
completion: { finished in
if(finished) {
self.removeFromSuperview()
}
}
)
Hat sonst noch jemand erlebt? Ich habe gelesen, dass andere hatten mehr Erfolg durch die Mitte, anstatt den Rahmen zu bewegen, aber ich hatte die gleichen Probleme mit dieser Methode zu.
- Wo sehen Sie diesen code ausführen?
- Stellen Sie sicher, dass der Rahmen tatsächlich ändert, weil completion-block wird sofort aufgerufen, wenn es keine animation.
- In einem benutzerdefinierten UIView Klasse. Ich animiere den Blick in Ort, um zu beginnen mit in init(), dann der obige code wird aufgerufen, wenn ein Tippen an beliebiger Stelle. Der Rahmen ist definitiv zu verändern...
- Nur hinzuzufügen, dass das gleiche tritt auch mit verschiedenen Animationen. z.B. Wechsel von der alpha-in der Ansicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für jemand anderes, das ist ein problem mit diesem, wenn etwas unterbricht die animation, die Fertigstellung Verschluss wird sofort aufgerufen. In meinem Fall war dies aufgrund einer leichten überlappung mit einem modalen übergang von der view-controller, der die benutzerdefinierte segue war unwinding aus. Mit der
delay
TeilUIView.animateWithDuration(0.3, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations:{}
hatte keinen Effekt für mich. Ich landete mit GCD zu verzögern animation ein Bruchteil einer Sekunde.Ich dieses Problem gelöst, in das Ende durch die Bewegung der animation von
hitTest()
und intouchesBegan()
imUIView