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 № 1Basierend 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];