Re: CALayer -displayLayer:inContext: never called during frame/bounds animation
Re: CALayer -displayLayer:inContext: never called during frame/bounds animation
- Subject: Re: CALayer -displayLayer:inContext: never called during frame/bounds animation
- From: David Duncan <email@hidden>
- Date: Mon, 10 Jun 2013 07:50:43 -0700
On Jun 8, 2013, at 6:04 AM, Daniele Margutti <email@hidden> wrote:
> Hi guys,
> I need to animate the frame of a CALayer instance; during the animation I should also update/redraw the content of the layer based upon the new size (frame by frame) of it.
>
> I've tried to watch and use -displayLayer:inContext: of CALayer (it's a delegate property) but It does not work: both with frame (it's a derived property of bounds/location/anchorPoint) and bounds animation I can't receive this message (it should be called by CALayer's internal drawInContext: method) during the animation process.
>
> Using needsDisplayOnBoundsChange I can get it called at the end of the animation, but nothing with bounds.
> It works fine with custom properties (I need to return YES on needsDisplayForKey method).
>
> Any idea?
The behavior you see is correct. Remember that the model layer (the layer you have) only sees discrete values for an animation – typically the beginning and end values. The intermediate values are generated by the Core Animation for rendering and you are not called back for them.
As such needsDisplayOnBoundsChange will only cause the layer to display once when the bounds changes, and you will only get -drawLayer:inContext: called once as a result.
> Is possible to force redraw of CALayer contents during bounds/frame animation?
What kind of animation are you trying to produce? There are a few different ways you could do this, but you may run into performance problems from all the redrawing first.
--
David Duncan
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden