2009-07-22 8 views
23

La documentation ne parle pas vraiment de ce que cela fait techniquement.Que fait exactement FillMode?

fadeInAnimation.fillMode = kCAFillModeForwards; 

Je ne vois pas vraiment l'effet de ceci. J'ai une vue avec alpha mis à 0.0. Puis je disparais. Mais quand je décommente la ligne, rien ne change. Même comportement Je voudrais comprendre ce que fait réellement fillMode.

Répondre

43

De l'CAMediaTiming protocol documentation:

Détermine si est gelé ou retiré présentation du récepteur une fois sa durée active est terminée.

Ceci détermine ce qui se passe à la fin de votre animation. Par défaut, il est défini sur kCAFillModeRemoved, ce qui signifie que les modifications de l'animation sont annulées lorsque l'animation est terminée. Si vous le basculez sur kCAFillModeForwards, les modifications provoquées par l'animation resteront bloquées.

Notez que vous devrez également définir la propriété removedOnCompletion sur NO pour empêcher la suppression de votre animation, ce qui rendrait ce paramètre inefficace.

+0

Grande explication! Oui, j'ai le removedOnCompletion réglé sur NO. C'est pourquoi je ne vois aucun changement dans le fillMode, non? Pourquoi est-ce appelé "fillMode"? Donc en interne ce n'est rien de plus que de garder les nouveaux paramètres calculés après toutes les routines d'interpolation d'animation? – Thanks

+1

Alors qu'est-ce que 'removedOnCompletion' pour si' fillMode' fait le travail? – jowie

+1

@jowie - Cela empêche l'intégralité de l'animation d'être supprimée à la fin. Le fillMode le verrouille simplement dans son état final, mais s'il est défini pour être supprimé une fois terminé, le paramètre fillMode n'aura aucune importance. –

2

-moi de donner une plus clarifié réponse:
bien en apparence mise fillMode propriété de l'animation à kCAFillModeForwards (ou kCAFillModeBoth) et en même temps de prise removedOnCompletion-NO peut garder votre couche dans son statut final fin de l'animation mais cette utilisation de fillMode n'est pas la manière conçue. et effectivement faire de mal si vous avez d'autres animations ajouter à la même la keyPath

(par la voie, la bonne approche pour garder l'animation état final est de changer la valeur de la propriété pour correspondre à la dernière image de l'animation.)

ce que le fillModevraiment utiliser est en relation avec une animation enfant dans une animation groupée de sorte que vous pouvez spécifier l'animation des enfants spécifique dans l'état souhaité