UIImageView做帧动画内存问题,内存消耗太大。如果使用gif格式图片,会降低内存消耗,可是图片失真。今从网上看到一个帖子有更好方法解决,特意转载。
简单UIImageView animationImages

  1. p_w_picpathsArray = [NSArray arrayWithObjects: 
  2.             [UIImage p_w_picpathNamed:@"p_w_picpath1.png"], 
  3.             [UIImage p_w_picpathNamed:@"p_w_picpath2.png"], 
  4.             [UIImage p_w_picpathNamed:@"p_w_picpath3.png"], 
  5.             [UIImage p_w_picpathNamed:@"p_w_picpath4.png"], 
  6.             [UIImage p_w_picpathNamed:@"p_w_picpath5.png"],nil]; 
  7. animationImageView = [UIImageView alloc]; 
  8. [animationImageView initWithFrame:CGRectMake(0, 0, 131, 125)]; 
  9. animationImageView.animationImages = p_w_picpathsArray;//将序列帧数组赋给UIImageView的animationImages属性 
  10. animationImageView.animationDuration = 0.25;//设置动画时间 
  11. animationImageView.animationRepeatCount = 0;//设置动画次数 0 表示无限 
  12. [animationImageView startAnimating];//开始播放动画 
  13. [self addSubview:animationImageView]; 

– startAnimating启动动画
– stopAnimating停止动画
– isAnimating判断是否在动画执行过程中
缺点是使用UIImageView不能暂停播放。
 
思路:动态加载图片,不要把图片一下全部加在进去。
  1. imgV=[[UIImageView alloc]initWithFrame:CGRectMake(40, 40, 128, 128)]; 
  2. [self.window addSubview:imgV]; 
  3. [self performSelectorInBackground:@selector(playAnim)withObject:nil]; 
  4. [imgV release]; 
  5.  
  6. -(void)playAnim{ 
  7.     for (int i=0;i<101;){ 
  8.     usleep(100000); 
  9.     UIImage *p_w_picpath=[[UIImage alloc]initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%d",i+1 ] ofType:@"tiff"]]; 
  10.    [self performSelectorOnMainThread:@selector(changeImage:) withObject:p_w_picpath waitUntilDone:YES]; 
  11.    i++; 
  12.    } 
  13. }  

  14. -(void)changeImage:(UIImage*)p_w_picpath{ 
  15.    imgV.p_w_picpath=p_w_picpath;  
  16. }