UIImageView做帧动画内存问题,内存消耗太大。如果使用gif格式图片,会降低内存消耗,可是图片失真。今从网上看到一个帖子有更好方法解决,特意转载。
简单UIImageView animationImages
- p_w_picpathsArray = [NSArray arrayWithObjects:
- [UIImage p_w_picpathNamed:@"p_w_picpath1.png"],
- [UIImage p_w_picpathNamed:@"p_w_picpath2.png"],
- [UIImage p_w_picpathNamed:@"p_w_picpath3.png"],
- [UIImage p_w_picpathNamed:@"p_w_picpath4.png"],
- [UIImage p_w_picpathNamed:@"p_w_picpath5.png"],nil];
- animationImageView = [UIImageView alloc];
- [animationImageView initWithFrame:CGRectMake(0, 0, 131, 125)];
- animationImageView.animationImages = p_w_picpathsArray;//将序列帧数组赋给UIImageView的animationImages属性
- animationImageView.animationDuration = 0.25;//设置动画时间
- animationImageView.animationRepeatCount = 0;//设置动画次数 0 表示无限
- [animationImageView startAnimating];//开始播放动画
- [self addSubview:animationImageView];
– startAnimating启动动画
– stopAnimating停止动画
– stopAnimating停止动画
– isAnimating判断是否在动画执行过程中
缺点是使用UIImageView不能暂停播放。
思路:动态加载图片,不要把图片一下全部加在进去。
- imgV=[[UIImageView alloc]initWithFrame:CGRectMake(40, 40, 128, 128)];
- [self.window addSubview:imgV];
- [self performSelectorInBackground:@selector(playAnim)withObject:nil];
- [imgV release];
- -(void)playAnim{
- for (int i=0;i<101;){
- usleep(100000);
- UIImage *p_w_picpath=[[UIImage alloc]initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%d",i+1 ] ofType:@"tiff"]];
- [self performSelectorOnMainThread:@selector(changeImage:) withObject:p_w_picpath waitUntilDone:YES];
- i++;
- }
- }
- -(void)changeImage:(UIImage*)p_w_picpath{
- imgV.p_w_picpath=p_w_picpath;
- }
转载于:https://blog.51cto.com/lfhzxl/985759