I use CoreAnimation to animate UIImageView (curve Bezier animation). Here`s my code:
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.calculationMode = kCAAnimationCubic;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO;
CGPoint endPoint = originalPosition;
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:star.layer.position];
[path addQuadCurveToPoint:endPoint controlPoint:CGPointMake(star.layer.position.x, endPoint.y)];
pathAnimation.path = path.CGPath;
[star.layer addAnimation:pathAnimation forKey:@"moveToScorebarAnimation"];
As a result, I get EXC_BAD_ACCESS (code=2, address=0x0) with stacktrace:
CoreGraphics`CG::Path::apply(void*, void (*)(void*, CGPathElementType, CGPoint const*)) const:
0x613c06: pushl %ebp
0x613c07: movl %esp, %ebp
0x613c09: subl $24, %esp
0x613c0c: movl 8(%ebp), %eax
0x613c0f: movl (%eax), %ecx
0x613c11: movl (%ecx), %eax
0x613c13: movl 16(%ebp), %edx
0x613c16: movl %edx, 8(%esp)
0x613c1a: movl 12(%ebp), %edx
0x613c1d: movl %edx, 4(%esp)
0x613c21: movl %ecx, (%esp)
0x613c24: calll *64(%eax)
0x613c27: addl $24, %esp
0x613c2a: popl %ebp
0x613c2b: ret
I tried to use different manuals to do it, but app crashes the same way. Can't understand where`s my fault. Any help will be appreciated, thanks.
P. S. Here's a similar bug, but unfortunately it is solved just by removing animation.
P. P. S. Arc is enabled. Also, if I comment pathAnimation.path = path.CGPath; line, crash does not appear, as well as animation (what is not surprised :) ).
That error will be thrown when the object doesn't exist in memory. Make sure you initialization is proper way ?? make sure you initialize
Layer..etc..
?I'm not sure but it may be helpful for you.
Add your animation as
Replace CAKeyframeAnimation with CABasicAnimation:
Seems it's Apple bug