Ich habe versucht, den folgenden Code zu verwenden, um ein kontinuierlich rotierendes Quadrat auf dem Bildschirm zu erstellen. Aber ich weiß nicht, warum sich die Drehzahl ändert. Wie kann ich den Code ändern, um die Drehzahl invariabel zu machen? Ich habe versucht, verschiedene UIViewKeyframeAnimationOptions
, aber scheint keiner von ihnen funktionieren.
Das ist wirklich seltsam ... UIView.animateKeyframesWithDuration
funktioniert nicht so, wie ich es erwarten würde, wenn UIViewKeyframeAnimationOptions.CalculationModeLinear|UIViewKeyframeAnimationOptions.Repeat
mit Optionen übergeben wurde.
Wenn Sie die Nicht-Block-Methode zum Erstellen einer Keyframe-Animation verwenden (siehe unten), wird die Drehung wie erwartet wiederholt.
Wenn ich herausfinden werde, warum die blockbasierte Option nicht funktioniert, werde ich versuchen, daran zu denken, die Antwort auch hier zu aktualisieren!
%Vor%Ich habe das gleiche Problem schon einmal gesehen, so kann ich es machen:
%Vor%Ich habe dieses Problem kurz vor dem Aufgeben begriffen. Ich denke nicht, dass es doc darüber gibt, aber es funktioniert einfach.
Fügen Sie UIViewKeyframeAnimationOptionCalculationModeLinear
Ihre Keyframe-Optionen hinzu. Das Standardverhalten für UIView-Animationen besteht darin, die Animation zu vereinfachen. h., starte langsam, gehe auf Geschwindigkeit und bremse dann wieder kurz vor dem Ende ab.
AFAIU, dies passiert, weil die Standardanimationskurve UIViewAnimationOption.CurveEaseInOut
ist.
Leider hat UIViewKeyframeAnimationOptions
keine Optionen zum Ändern der Kurve, aber Sie können sie manuell hinzufügen!
Verwenden Sie diese Erweiterung:
%Vor% Jetzt können Sie Kurvenoptionen in UIView.animateKeyframesWithDuration
method