Hello,

  during the recent discussion "CALayer -drawInContext and GCD" it came up that 
you should not use [CATransation flush] and the argument made a point that it 
wasn't necessary and should be avoided because of negative consequences. I'm a 
little confused now as it seems -flush does help me achieve something that I 
don't know how to do otherwise.

I have delegate-drawn layers (on the main thread) whose content I want to 
change without animation, I don't want to a change transition of any kind in 
some situations. Up until now I'm using this:

    [CATransaction flush];
    [CATransaction begin];
    [CATransaction setValue:(id)kCFBooleanTrue 
forKey:kCATransactionDisableActions];
    
    [self applyLayerFrame];  //changes position of the layer, layer possibly 
bounds too
    [layer setNeedsDisplay];

    [CATransaction commit];

Which works exactly as planed, both frame and content change instantly. If I 
remove the call to -flush the frame changes without animation but the content 
change is animated.

Given the argument I surely must be doing something wrong. No matter where I 
put the [layer setNeedsDisplay] call, the content change is always animated. It 
only works like I want it if I use flush AND put -setNeedsDisplay where it is 
now.

So, what's the correct method of updating a delegate-drawn layer's content 
without animating the change?

Regards
Markus

PS: The GeekGameBoard demo project uses flush a lot, I think I got the idea 
from there.
--
__________________________________________
Markus Spoettl

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to