首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CAKeyframeAnimation崩溃

CAKeyframeAnimation崩溃
EN

Stack Overflow用户
提问于 2012-12-14 21:13:04
回答 1查看 846关注 0票数 2

我正在尝试使用以下代码创建一个简单的CAKeyframeAnimation:

代码语言:javascript
复制
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    CALayer *rotLayer = [CALayer layer];
    rotLayer.bounds = CGRectMake(0.0, 0.0, 100.0, 50.0);
    rotLayer.anchorPoint = CGPointMake(0.5, 0.5);
    rotLayer.position = CGPointMake(160.0, 200.0);
    rotLayer.backgroundColor = [UIColor redColor].CGColor;

    [self.view.layer addSublayer:rotLayer];

    /*
    CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    basic.duration = 3.0;
    basic.fromValue = [NSNumber numberWithFloat:0.0];
    basic.toValue = [NSNumber numberWithFloat:2.0];

    [rotLayer addAnimation:basic forKey:@"basic"];
    */

    CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
    animation.duration = 3.0;
    animation.keyTimes = @[ [NSNumber numberWithFloat:0.0], [NSNumber numberWithFloat:1.0] ];
    animation.values = @[ [NSNumber numberWithFloat:0.0], [NSNumber numberWithFloat:2.0] ];
    animation.timingFunctions = @[ [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear], [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear] ];
    animation.fillMode = kCAFillModeForwards;
    animation.removedOnCompletion = NO;

    [rotLayer addAnimation:animation forKey:@"test"];   
}

如果我使用基本动画而不是关键帧动画,一切都会正常工作,但如果我在模拟器中运行这段代码,它会崩溃,并显示以下消息:

代码语言:javascript
复制
 -[CAKeyframeAnimation _copyRenderAnimationForLayer:]: unrecognized selector sent to instance 0x7558870
 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CAKeyframeAnimation _copyRenderAnimationForLayer:]: unrecognized selector sent to instance 0x7558870'

这是一个支持ARC的新项目。即使将动画设置为属性也不起作用。还链接了QuartzCore框架。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-22 01:57:42

当我运行这段代码时,它工作得很好(一个红色的矩形围绕锚点旋转,锚点位于矩形的中心)。

您确定您正确链接了QuartzCore框架吗?你把<QuartzCore/QuartzCore.h>导入到你的实现文件中了吗?看起来_copyRenderAnimationForLayer:是苹果内部的方法,所以我不会质疑它的存在。但是,如果您没有正确地链接或导入文件,您的应用程序将不会知道该方法的存在,然后抛出您看到的异常。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13879375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档