Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What exactly does removedOnCompletion = NO do?

CAAnimation provides the removedOnCompletion property which defaults to YES.

Let's recognize these facts:

A) Core Animation only affects the Presentation Tree, but not the Model Tree. When an animation is done, you end up seeing whatever is set in the Model Tree. You can set a fillMode to kCAFillModeBoth for example, which will swap the value from the Presentation Tree over to the Model Tree once the animation is done. This causes your animation to not revert back (which is most likely what you want).

B) I did an experiment. removedOnCompletion = NO will NOT have the same effect as kCAFillModeBoth or kCAFillModeForwards. To be more precise: It has absolutely no effect on how the result looks like when the animation is done. Wether it is "removed" or not, it seems to not affect the Presentation Tree at all.

To explain what removedOnCompletion really does, the documentation is too weak in this regard. I don't get it. Can anyone explain what exactly would be removed, and what's the benefit of not having it removed?

My guess is that Apple is talking about the animator object itself, which is added to the layer with -addAnimation:forKey: ... but again: What's the point of keeping it around?

like image 879
Proud Member Avatar asked Jan 20 '11 12:01

Proud Member


2 Answers

removedOnCompletion:

Basically, is the animation removed from the layer's actions when that animation is done.

YES - If you intend to use the animation only once, you do not need to use the delegate method to remove the animation from the layer upon completion.

fillMode:

This property controls what happens visually when the animation is completed, depending on the type of fill mode specified.

like image 80
Evan Mulawski Avatar answered Nov 08 '22 06:11

Evan Mulawski


If removedOnCompletion is YES, the animation will be removed on completion and there is nothing to "fill forward" at all. So if you want to use fillMode you must set removedOnCompletion to NO.

like image 43
an0 Avatar answered Nov 08 '22 07:11

an0