Ios 使用CAKeyframeAnimation设置图像序列动画
我正在尝试设置一系列图像的动画,这可以通过简单的UIImageView动画轻松完成;但是,我希望能够检测动画何时完成,以便允许用户执行其他任务。所以我试着用想象来做。当我运行下面的代码时,程序崩溃了。有人能告诉我我做错了什么吗Ios 使用CAKeyframeAnimation设置图像序列动画,ios,animation,core-animation,cakeyframeanimation,Ios,Animation,Core Animation,Cakeyframeanimation,我正在尝试设置一系列图像的动画,这可以通过简单的UIImageView动画轻松完成;但是,我希望能够检测动画何时完成,以便允许用户执行其他任务。所以我试着用想象来做。当我运行下面的代码时,程序崩溃了。有人能告诉我我做错了什么吗 CALayer *myLayer = [[CALayer alloc]init]; [myLayer setBounds:CGRectMake(0, 0, 100, 100)]; [myLayer setPosition:CGPointMake(160.0,
CALayer *myLayer = [[CALayer alloc]init];
[myLayer setBounds:CGRectMake(0, 0, 100, 100)];
[myLayer setPosition:CGPointMake(160.0, 100.0)];
myLayer.backgroundColor = [[UIColor colorWithRed:4 green:0 blue:0 alpha:1] CGColor];
[self.window.layer addSublayer:myLayer];
CAKeyframeAnimation *anim;
NSArray *images =[NSArray arrayWithObjects:[UIImage imageNamed:@"img1.png"],
[UIImage imageNamed:@"img2.png"],nil];
anim = [CAKeyframeAnimation animation];
[anim setKeyPath:@"contents"];
[anim setValues:images];
[anim setCalculationMode:@"discrete"];
[anim setRepeatCount:3];
[anim setDuration:1.0];
[myLayer addAnimation:anim forKey:nil];
如您所说,如果可以通过简单的UIView动画完成,那么实际上您可以检查是否完成:
[UIView animateWithDuration:duration
animations:^(void) {
...
}
completion:^(BOOL finished) {
...
}
];
如果出于某种原因,您最终不能这样做,那么查看崩溃报告将非常有用。这可能是由于您将值设置为
UIImage
,而不是CGImageRef
,这是contents
属性所要求的。