views:

138

answers:

1

On iPhone I have a CALayer that I animate via Core Animation. Then at some point I change view controllers. I then return to the view controller with the CALayer and in viewWillAppear: I set the frame and position properties on my layer to move it back to its starting point.

Setting these properties changes the model layer but the presentation layer still has the old values and its presentation layer does not update until the next animation I play.

In the CA Programming guide it says "You can query an instance of CALayer for its corresponding presentation layer while an animation transaction is in process." Which, to me, implies that the presentation layer should only be different from the model layer during an animation. But there are no animations currently running. I even used kCATransactionDisableActions to ensure that when I set the position property an implicit animation is not started.

Does anyone know why my presentation and model layers are out of sync?

Thanks.

A: 

One workaround I've used is to reset the position of my layers in viewWillDisappear. Also I noticed that if I don't animate my layer right away then it does indeed move to the position that I set in viewWillAppear.

Kevin McCullough
The general problem is that if I set the position after an animation it only affects the model layer. Is there some way to force the presentation layer to "catch up to the model layer?
Kevin McCullough