Animierte CAShapeLayer Pie

7

Ich versuche ein einfaches und animiertes Kreisdiagramm mit CAShapeLayer zu erstellen. Ich möchte, dass es von 0 bis zu einem angegebenen Prozentsatz animiert.

Um die Formebene zu erstellen, verwende ich:

%Vor%

Dann animiere ich:

%Vor%

Offensichtlich animiert das auf eine wirklich seltsame Art und Weise. Die Form wächst sozusagen in ihren Endzustand. Gibt es eine einfache Möglichkeit, diese Animation der Richtung des Kreises folgen zu lassen? Oder ist das eine Einschränkung von CAShapeLayer Animationen?

    
Mike A 19.11.2011, 20:53
quelle

4 Antworten

32

Ich weiß, dass diese Frage schon lange beantwortet wurde, aber ich denke nicht, dass dies ein guter Fall für CAShapeLayer und CAKeyframeAnimation ist. Core Animation hat die Macht, Animations-Tweening für uns zu machen. Hier ist eine Klasse (mit einem Wrapping UIView , wenn Sie möchten), die ich verwende, um den Effekt ziemlich gut zu erreichen.

Die Layer-Unterklasse ermöglicht implizite Animation für die progress-Eigenschaft, aber die View-Klasse umschließt ihren Setter in einer UIView -Animationsmethode. Der interessante (und letztlich nützliche) Nebeneffekt der Verwendung einer Animation mit 0.0 Länge mit UIViewAnimationOptionBeginFromCurrentState ist, dass jede Animation die vorherige aufhebt, was zu einem glatten, schnellen und hochfrequenten Kuchen führt, wie dies (animiert) und dies (nicht animiert, sondern inkrementiert).

DZRoundProgressView.h

%Vor%

DZRoundProgressView.m

%Vor%     
zwaldowski 05.02.2012, 16:44
quelle
4

Ich schlage vor, dass Sie stattdessen eine Keyframe-Animation erstellen:

%Vor%

Grundlegende Animation ist gut für Skalare / Vektoren. Aber willst du, dass es deine Pfade interpoliert?

    
debleek63 19.11.2011 21:58
quelle
1

Schnelle Kopie / Einfügen Schnelle Übersetzung von dieser ausgezeichneten Objective-C-Antwort .

%Vor%     
thattyson 16.09.2015 21:20
quelle
1

In Swift 3

%Vor%     
Abdul 20.04.2017 19:15
quelle