UIImageView帧动画清除缓存图片,防止图片占用内存太多

我们在使用UIImageView帧动画时会碰到加载到内存的图片不会自动释放,占用很多的内存,这时我们可能使用 UIImage imageWithContentsOfFile 并配合 imageView.animationImages = nil; 来清理不用的缓存动画图片。具体如下:

UIImageView帧动画相关属性和方法:

需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片)

@property(nonatomic,copy) NSArray *animationImages;

帧动画的持续时间

@property(nonatomic) NSTimeInterval animationDuration;

帧动画的执行次数(默认是无限循环)

@property(nonatomic) NSInteger animationRepeatCount;

开始执行帧动画

- (void)startAnimating;

停止执行帧动画

- (void)stopAnimating;

是否正在执行帧动画

- (BOOL)isAnimating;

例:加载动画图片的方式

// 1.加载所有的动画图片

- (void)runAnimationWithCount:(int)count name:(NSString *)name

{

if (self.imageView.isAnimating) return;

// 1.加载所有的动画图片

NSMutableArray *images = [NSMutableArray array];

for (int i = 0; i

// 计算文件名

NSString *filename = [NSString stringWithFormat:@"%@_d.jpg", name, i];

// 加载图片

// imageNamed: 有内存缓存直到程序退出才释放(传入文件名)

// UIImage *image = [UIImage imageNamed:filename];

// imageWithContentsOfFile: 没有缓存,自动释放(传入文件的全路径)

NSBundle *bundle = [NSBundle mainBundle];

NSString *path = [bundle pathForResource:filename ofType:nil];

UIImage *image = [UIImage imageWithContentsOfFile:path];

// 添加图片到数组中

[images addObject:image];

}

self.imageView.animationImages = images;

// 2.设置播放次数(1次)

self.imageView.animationRepeatCount = 1;

// 3.设置播放时间

self.imageView.animationDuration = images.count * 0.05;

[self.imageViewstartAnimating];

// 4.动画放完1秒后清除内存

CGFloat delay = self.tom.animationDuration;

[self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:delay];

}

时间: 2024-12-18 01:41:39

UIImageView帧动画清除缓存图片,防止图片占用内存太多的相关文章

关于UIImageView帧动画内存无法释放的问题

UIImageView帧动画相关属性和方法: 需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片) @property(nonatomic,copy) NSArray *animationImages; 帧动画的持续时间 @property(nonatomic) NSTimeInterval animationDuration; 帧动画的执行次数(默认是无限循环) @property(nonatomic) NSInteger animationRepeatCount;

UIImageView帧动画相关属性和方法-15-05-04

UIImageView帧动画相关属性和方法 •@property(nonatomic,copy) NSArray *animationImages; Ø需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片) Ø •@property(nonatomic) NSTimeInterval animationDuration; Ø帧动画的持续时间 • •@property(nonatomic) NSInteger animationRepeatCount; Ø帧动画的执行次数(

IOS-UI基础-UIImageView帧动画

1. 创建一个可变数组 --> mutableArray, 用来存放, UIImage 对象, 要做动画的图片2. 执行一个for循环 1. 拼接图片名称 2. 实例化图片对象 --> UIImage 3. 把UIImage对象添加到可变数组中 3. 把可变数组赋值给UIImageView的animationImages 为imageView 设置 图片 --> 数组中最后一个UIImage对象 设置重复次数: animationRepeatCount : 如果不设置, 默认是无限循环

iOS中UIImageView帧动画相关属性和方法

@property(nonatomic,copy)NSArray *animationImages; 需要播放的序列图片数组(里面都是UIImage对象,会按顺序显示里面的图片) @property(nonatomic)NSTimeInterval animationDuration; 帧动画的持续时间 @property(nonatomic)NSInteger animationRepeatCount; 帧动画的执行次数(默认是无限循环) - (void)startAnimating; 开始执

UIImageView帧动画相关属性和方法

@property(nonatomic,copy) NSArray *animationImages; 需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片) @property(nonatomic) NSTimeInterval animationDuration;帧动画的持续时间 @property(nonatomic) NSInteger animationRepeatCount; 帧动画的执行次数(默认是无限循环) - (void)startAnimating;开

将gif图片解析为cocos2d-x帧动画

因为游戏项目需要能够直接播放gif格式的图片,但是cocos2d-x本身并没有提供这方面的功能.在网上查阅发现已经有人给出了一种实现,但是并不能够完全满足我的需求.而且存在一些问题,如不能跨平台,频繁加载时导致内存用尽.后来参考其源码作出了一些修改,使gif图片转换为帧动画方便我使用. 现在已经优化了内存分配问题并且支持跨平台了,支持cocos2d-x3.0以上版本. 下面是使用例子: // 动画定义 GifAnimationDef def; def.loops = -1; // 循环次数 de

Android基础笔记(十)- 帧动画、补间动画详解、对话框

帧动画 补间动画Tween Animation 对话框以及面试中的注意点 帧动画 帧动画很简单,我们首先看一下Google官方解释This is a traditional animation in the sense that it is created with a sequence of different images. 意思表达的很明了,一个传统的动画是由一组不同的图片组成的.帧动画,就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果. 创建一帧动画分为一下几步(支持4

Android 学习之逐帧动画(Frame)

帧动画就是将一些列图片.依次播放. 利用肉眼的"视觉暂留"的原理,给用户的感觉是动画的错觉,逐帧动画的原理和早期的电影原理是一样的. a:须要定义逐帧动画,能够通过代码定义.也能够通过XML文件定义.一般XML文件定义比較直观 <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/

【独立开发者er Cocos2d-x实战 002】使用Cocos Studio创建帧动画

在CocosStudio中存在两种设置帧动画的方式: 单张图片 多张图片 大家可以点击连接查看相关文章,不过需要指出文章中错误点: addChild(rootNode); //需要添加这一句 版权声明:本文为博主原创文章,未经博主允许不得转载.