2009-07-22 8 views
23

In der Dokumentation geht es nicht wirklich darum, was das technisch macht.Was genau macht fillMode?

fadeInAnimation.fillMode = kCAFillModeForwards; 

Ich sehe nicht wirklich die Wirkung von diesem. Ich habe eine Ansicht mit Alpha auf 0,0 gesetzt. Dann verblasse ich es. Aber wenn ich die Zeile abhöre, ändert sich nichts. Gleiches Verhalten. Ich würde gerne verstehen, was dieser FillMode wirklich macht.

Antwort

43

Vom CAMediaTiming protocol documentation:

fest, ob der Präsentation des Empfängers eingefroren oder entfernt wird, sobald seine aktive Dauer abgeschlossen hat.

Dies bestimmt, was am Ende der Animation passiert. Standardmäßig ist es auf kCAFillModeRemoved festgelegt, was bedeutet, dass die Animationsänderungen nach Abschluss der Animation rückgängig gemacht werden. Wenn Sie es auf kCAFillModeForwards umstellen, werden die Änderungen, die durch die Animation verursacht werden, herumhängen.

Beachten Sie, dass Sie wahrscheinlich auch die Eigenschaft removedOnCompletion auf NO setzen müssen, um zu verhindern, dass Ihre Animation entfernt wird, was diese Einstellung unwirksam machen würde.

+0

Große Erklärung angeben! Ja, ich habe die removedOnCompletion auf NO gesetzt. Deshalb sehe ich keine Änderungen im FillMode, oder? Warum heißt das "fillMode"? Also ist es intern nichts anderes, als die neuen berechneten Parameter nach allen Animationsinterpolationsroutinen zu behalten? – Thanks

+1

Also was ist 'removedOnCompletion' für wenn' fillMode' den Job erledigt? – jowie

+1

@jowie - Dies verhindert, dass die Animation als Ganzes bei ihrer Fertigstellung entfernt wird. Der fillMode sperrt ihn lediglich in seinen endgültigen Zustand. Wenn er jedoch so eingestellt wird, dass er entfernt wird, ist die Einstellung fillMode nicht relevant. –

2

lassen Sie mich es eine geklärte Antwort geben:
obwohl in Erscheinung Einstellung der fillMode Eigenschaft Animation kCAFillModeForwards (oder kCAFillModeBoth) und zugleich removedOnCompletion-NO Einstellung Ihrer Schicht in seiner endgültigen Status halten kann, wenn Animation fertig aber diese Verwendung von fillMode ist nicht der entworfene Weg. und tatsächlich schaden, wenn Sie andere Animation zum gleichen hinzuzufügen haben die keyPath

(übrigens, der richtige Ansatz für keep Animation Endzustand ist der Wert der Eigenschaft zu ändern, um das letzte Bild der Animation übereinstimmen.)

was die fillModewirklich ist mit einer Kinderanimation in einer gruppierten Animation in Verbindung verwenden, so dass Sie bestimmte Kinderanimation in den gewünschten Zustand