使用CAKeyframeAnimation动画显示图像序列

时间:2011-11-28 22:20:47

标签: ios animation core-animation cakeyframeanimation

我正在尝试动画一系列图像,这可以通过简单的UIImageView动画轻松完成;但是,我希望能够检测动画何时完成,以便我可以允许用户执行其他任务。所以我试图用CAKeyframeAnimation来做。当我运行以下代码时,程序崩溃了。谁能告诉我我做错了什么?

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

1 个答案:

答案 0 :(得分:0)

如果可以使用简单的UIView动画完成,正如您所说,那么实际上您可以检查完成情况:

[UIView animateWithDuration:duration
                 animations:^(void) {
                     ...
                 }
                 completion:^(BOOL finished) {
                     ...
                 }
 ];

如果由于某种原因你毕竟不能这样做,那么看看崩溃报告会很有用。