2011-01-20 4 views
13

CAAnimation fournit la propriété removedOnCompletion dont la valeur par défaut est YES.Que fait exactement removedOnCompletion = NO faire?

Reconnaissons ces faits:

A) Core Animation affecte seulement la présentation Arbre, mais pas l'arbre du modèle. Quand une animation est terminée, vous finissez par voir ce qui est défini dans l'arbre du modèle. Vous pouvez par exemple définir un fillMode à kCAFillModeBoth, qui permutera la valeur de l'arbre de présentation dans l'arbre du modèle une fois l'animation terminée. Cela provoque votre animation à ne pas revenir en arrière (ce qui est probablement ce que vous voulez).

B) J'ai fait une expérience. removedOnCompletion = NO PAS ont le même effet que kCAFillModeBoth ou kCAFillModeForwards. Pour être plus précis: Cela n'a absolument aucun effet sur le résultat lorsque l'animation est terminée. Que ce soit "supprimé" ou non, il semble que cela n'affecte en rien l'arbre de présentation.

Pour expliquer ce que retire vraimentOnCompletion, la documentation est trop faible à cet égard. Je ne comprends pas. Quelqu'un peut-il expliquer ce qui serait exactement supprimé, et quel est l'avantage de ne pas l'avoir supprimé? Je suppose que Apple parle de l'objet animateur lui-même, qui est ajouté à la couche avec -addAnimation: forKey: ... mais encore une fois: Quel est le point de le garder?

Répondre

12

removedOnCompletion:

Fondamentalement, l'animation est retiré de l'action de la couche lorsque cette animation se fait. - Si vous ne souhaitez utiliser l'animation qu'une seule fois, vous n'avez pas besoin d'utiliser la méthode déléguée pour supprimer l'animation du calque à la fin.

fillMode:

Cette propriété contrôle ce qui se passe visuellement lorsque l'animation est terminée, en fonction du type de mode de remplissage spécifié.

12

Si removedOnCompletion est OUI, l'animation sera supprimée à la fin et il n'y aura plus rien à "remplir". Donc, si vous voulez utiliser fillMode, vous devez définir removedOnCompletion à NO.

+0

oui fillmode n'affiche aucun impact car nous supprimons l'animation pour que l'objet retourne à l'état d'origine –

0

La couche de présentation de la vue est effectuée par l'animation même à l'arrêt. Lorsque vous supprimez l'animation, la couche de présentation revient à la valeur de la couche de modèle de la vue, de sorte que vous obtiendrez un résultat au format an0.