I'm attempting to create an animated CALayer
that uses a CABasicAnimation
in order to animate an object that rotates at discrete intervals between two angles. Note the word discrete: I'm not trying to create a continuous animation between two points, but rather I want to calculate fixed increments between each angle in order to create a discrete movement feel.
Here's a diagram:
I've looked into setting the byValue
attribute of the CABasicAnimation
, but I can't seem to get it to work since you can't use fromValue
, ToValue
, and byValue
in one animation. fromValue
is always from zero, so I guess that could be dropped, but it still never animates correctly when using the current endAngle
as the toValue
and a byValue
of 0.1
(arbitrarily chosen but should work for testing). Any ideas on how to implement this? Here's code I'm using:
anim = [CABasicAnimation animationWithKeyPath:@"currentEndAngle"];
anim.duration = 0.5f;
anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
anim.toValue = [NSNumber numberWithFloat:self.endAngle];
anim.byValue = [NSNumber numberWithFloat:0.1f];
anim.repeatCount = HUGE_VALF;
[anim setDelegate:self];
[self addAnimation:anim forKey:@"animKey"];
Thanks!