2012-04-18 57 views
1

我有一个要求动画图像。我有大量的图像,这需要作为视频播放。在玩游戏的时候,有时我需要更改一些图片,因为它们会在服务器上更新。所以玩耍应该会自动更新这个新的图像。动态改变动画中的图像IOS

我试过使用UIImageView。我们无法控制动画。 然后我尝试CAKeyframeAnimation提供图像数组值属性。我可以播放和暂停动画。但是在这里我也不能在播放时动态改变图像。

任何人都可以帮助我解决这个问题。

感谢 MIA

回答

0

上的UIImageView动画系统是非常有限的。我建议你用say 2图像视图制作你自己的实现。

你会比改变一个imageview的形象和淡入和淡出使用UIView animateWithDuration

我已经写了你的方法。请注意:我没有测试过它。

它假定你有你的帧称为“框架”数组中,并有放置彼此称为“imgv1”和“imgv2”

-(void)performAnimationOfFrameAtIndex:(NSNumber*)indexNum 
{   
    int index = [indexNum intValue]; 
    if(index >= frames.count) 
    { 
     return; 
    } 
    UIImage *img = [frames objectAtIndex:index]; 

    UIImageView *imgIn; 
    UIImageView *imgOut; 
    if(index % 2 == 0) 
    { 
     imgIn = imgv1; 
     imgOut = imgv2; 
    } 
    else { 
     imgIn = imgv2; 
     imgOut = imgv1; 
    } 
    imgIn.image = img; 
    [self.view sendSubviewToBack:imgIn]; 

    [UIView animateWithDuration:0.1 animations:^{ 
     imgIn.alpha = 1; 
     imgOut.alpha = 0; 
    } completion:^(BOOL finished) { 
     [self performSelectorOnMainThread:@selector(performAnimationOfFrameAtIndex:) withObject:[NSNumber numberWithInt:index+1] waitUntilDone:NO]; 
    }]; 

} 
+0

你的意思是如果我有100帧..我需要使用3个图像视图,并将第3个位置,然后替换这些图像视图中的下3个图像等。你能否详细说明一下? – mia 2012-04-19 05:22:20

+0

看到我上面编辑的答案... – EsbenB 2012-04-19 12:10:50

0

使用两UIImageViews和交换他们的前两名UIIMageView

如果您对“动画”UIView的引用较弱,请务必检查动画是否在完成块中完成。否则,当您导航到另一个视图时,您可能会遇到性能问题,对动画方法的递归调用将继续!

- (void)animateImagesAtIndex:(NSNumber *)imageIdx { 
    // Do something here 
    [UIView animateWithDuration:1 animations:^{ 
     // Do swap 
    } 
    completion:^(BOOL finished) { 
     if (finished) { 
      [self animateImagesAtIndex:imageIdx]; 
     } 
    }]; 
} 
0

UIImageView支持一系列图像的动画。您只需使用图像数组设置属性animationImages,然后调用方法startAnimating和stopAnimating。