• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: sync drawing an ever-increasing path
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: sync drawing an ever-increasing path


  • Subject: Re: sync drawing an ever-increasing path
  • From: David Duncan <email@hidden>
  • Date: Tue, 23 Oct 2012 13:25:21 -0700

On Oct 23, 2012, at 12:34 PM, David Rowland <email@hidden> wrote:

> This worked for me. When initializing your UIView, add an instance variable "shapeLayer" and do this,
>
>         shapeLayer = [CAShapeLayer layer];
>         [[self layer] addSublayer:shapeLayer];
>
>
> In drawRect, set up your path and do this,

There is no need to do this inside of drawRect. In fact by doing so (unless your UIView actually needs to draw something) you've unnecessarily increased your memory footprint and reduce the performance to start the animation.

If you want the animation to happen as soon as the view is placed in the window, the correct place to do this is inside of -[UIView didMoveToWindow:]. Just check that the moved to window is not nil (or nothing will happen).

>
>     CABasicAnimation *pathAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
>     pathAnimation.duration = 4.0;
>     pathAnimation.fromValue = [NSNumber numberWithFloat:0.0f];
>     pathAnimation.toValue = [NSNumber numberWithFloat:1.0f];
>     [shapeLayer addAnimation:pathAnimation forKey:@"strokeEndAnimation"];

You can also do this implicitly once the layer is in a layer tree by setting the animation duration on the current CATransaction and setting the strokeEnd directly.

>
>
>
> That seems to be all that is needed.
>
> David
>
>
>
>
> On Oct 23, 2012, at 11:37 AM, David Duncan <email@hidden> wrote:
>
>> On Oct 23, 2012, at 4:37 AM, Roland King <email@hidden> wrote:
>>
>>> I want to animate the drawing of  CGPath in a UIView, so it looks as if it's being drawn. I have the UIView, I have the CGPath, I am able to split the CGPath at any point from 0 to 100% into that which should be drawn and that which shouldn't yet, that's all done, so I can, fairly efficiently, call -(CGPath)[ myObject fractionalPath:(CGFloat)fraction ] and get a path.
>>
>>
>> You can do this with a CAShapeLayer by animating the strokeEnd property. Should be very simple to do, although if your path is very complex it may make more sense to break it into pieces and use multiple shape layers animated sequentially.
>> --
>> 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
>

--
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

  • Follow-Ups:
    • Re: sync drawing an ever-increasing path
      • From: David Rowland <email@hidden>
References: 
 >sync drawing an ever-increasing path (From: Roland King <email@hidden>)
 >Re: sync drawing an ever-increasing path (From: David Duncan <email@hidden>)
 >Re: sync drawing an ever-increasing path (From: David Rowland <email@hidden>)

  • Prev by Date: Re: App Sandbox Container or Data Directory
  • Next by Date: Re: App Sandbox Container or Data Directory
  • Previous by thread: Re: sync drawing an ever-increasing path
  • Next by thread: Re: sync drawing an ever-increasing path
  • Index(es):
    • Date
    • Thread