/ / Wie finde ich Details zur aktuellen UIView-Animation? - Uiview, Uianimation

Wie finde ich Details der aktuellen UIView-Animation? - uiview, uianimation

Ich habe eine Setzermethode für eine Eigenschaft auf einer benutzerdefinierten Ebene UIView Klasse. Wenn es innerhalb eines gesetzt ist UIView Animationsblock, ich möchte es hinzufügen CABasicAnimation auf die Ebene der Ansicht mit der gleichen Dauer und Erleichterung wie der UIView Animation. Wie finde ich heraus, ob ich in einem UIView Animationsblock und Wie bekomme ich die Dauer und die Lockerungskurve?

Antworten:

1 für die Antwort № 1

Basierend auf dieser Frage habe ich diese Erweiterung gemacht UIView Blockanimationen: UIView + AnimatedProperty.

Es erlaubt Ihnen zu laufen CAAnimations wenn der Setter aus dem Animationsblock aufgerufen wird. Beispiel mit cornerRadius ist enthalten.


2 für die Antwort № 2

Sehr einfach.. Mit können Sie alle Animationsschlüssel auf Ihre Ansicht anwenden

[self.YourView.layer animationKeys];

1 für die Antwort № 3

Die Dokumentation für [UIView animateWithDuration] besagt dies

Diese Methode führt die angegebenen Animationen sofort mit den Animationsoptionen UIViewAnimationOptionCurveEaseInOut und UIViewAnimationOptionTransitionNone aus.

Was die Dauer angeht, stellst du die Dauer selbst ein, also hast du das jetzt schon.


0 für die Antwort № 4

Sie können die aktuelle Animation leicht genug erhalten. Zum Beispiel beim Einrichten eines CATransaction:

CAAnimation *animation = [self.layer animationForKey:self.layer.animationKeys.firstObject];
[CATransaction begin];
[CATransaction setAnimationDuration:animation.duration];
[CATransaction setAnimationTimingFunction:animation.timingFunction];

// CALayer animation here

[CATransaction commit];