Es sollte etwas wirklich einfaches sein, aber ich war nicht erfolgreich dabei, das mit Blöcken zu machen. Es gibt Fragen und Antworten zu diesem Thema, aber alle, die ich gefunden habe, werden durch die Verwendung von CABasicAnimation
und nicht von UIView
Block-basierte Animation gelöst, und genau darum geht es mir.
Der folgende Code funktioniert nicht (blockbasiert), keine Animation:
%Vor% Aus meiner Sicht, wenn jedes Mal, wenn wir Block-Based verwenden, keine Animation auftreten würde, wenn UIViewAnimation
Block "sieht", dass der Anfangswert derselbe wie der endgültige Wert ist. Fair genug, wenn man es auf 360 Grad stellt, bedeutet das, dass das Objekt dort bleibt, wo es ist. Aber es muss eine Möglichkeit sein, Block-basierte Animation zu verwenden, um diese animieren zu lassen, weil das folgende CABasicAnimation
einwandfrei funktionieren würde:
Zusätzlich funktioniert das folgende blockbasierte Verfahren, aber es gibt einen Stop zwischen den Animationen (zuerst dreht es sich um 180 Grad, dann daraus um weitere 180 Grad um die Drehung abzuschließen), was ich nicht möchte:
%Vor% Ich weiß, ich könnte viel Zeit sparen und mich einfach der Verwendung von CABasicAnimation
widmen und damit fertig sein, aber ich möchte wissen warum einer arbeitet und der andere nicht dieser Fall (macht eine 360-Grad-Drehung). Ich hoffe, dass Sie mir diesbezüglich eine detaillierte Erklärung geben können zwischen den 2 in diesem Fall und einem Code (blockbasiert), der eine komplette 360-Grad-Drehung ausführen kann.
Vielen Dank im Voraus.
Mit UIView-Animationen berechnet Core Animation den kürzesten Pfad zwischen der anfänglichen Transformation und der endgültigen Transformation. Die 360 ° -Rotation funktioniert nicht, da die letzte Transformation die gleiche ist wie die ursprüngliche Transformation.
Für das, was es wert ist, habe ich gerade den folgenden Code ausprobiert, der vier 90 ° -Drehungen ohne Verzögerung zwischen den Rotationen gleichmäßig macht:
%Vor% Dies ist etwas, auf das die Keyframe-Animationen von iOS 7 gut abgestimmt sind. Beispielsweise können Sie eine vollständige Drehung von view
in drei Teile aufteilen:
Beachten Sie, dass Sie bei Verwendung von UIViewKeyframeAnimationOptionCalculationModePaced
alle Startzeiten und -dauern leer lassen können.
Hier ist eine vollständigere Version von neilco's rotateSpinningView.
Es spinnt im oder gegen den Uhrzeigersinn. Es hat einen completion:
-Parameter und es startet und stoppt einfach.
@neilco eine sehr gute Lösung, aber es ist eine unendliche Rotation.
Basierend auf seinem Code modifiziere ich ein Bit, um eine Rotation mit einer Schleife zu implementieren.
%Vor%}
Tags und Links ios uiviewanimation core-graphics cabasicanimation