您的位置:首页 > 移动开发 > IOS开发

iOS动画加载图片

2015-10-04 21:22 316 查看
// 0. 动态加载图片到一个NSArray中
NSMutableArray *arrayM = [NSMutableArray array];

for (int i = 0; i < count; i++) {
NSString *imgName = [NSString stringWithFormat:@"%@%0004d.jpg", picName, i];

// 根据图片名称加载图片
// 通过imageNamed:这中方式加载图片,加载好德图片会一直保存卸载内存中,不会释放。这样下次如果再使用同样的图片的时候就不需要在重新加载了,因为内存里面已经有了。缺点就是:如果加载了大量的图片,那么这些图片会一直保留在内存中,导致应用程序占用内存过大(这就叫缓存)

//使用这种方式加载图片,加载起来的图片即便没有强类型指针引用也不会销毁(会被缓存)
//        UIImage *imgCat = [UIImage imageNamed:imgName];

//UIButton默认情况就能坚挺点击事件,而UIImageView默认情况下不能
// UIButton 可以在不同状态下显示不同的图片
// UIButton 既可以显示文字,又能显示图片(能显示2张图片,backgroundimage和image)

//使用下面这种方式加载的图片,只要没有强类型指针引用就会被销毁了
// 解决:换一种加载图片的方式,不要使用缓存
// 获取图片的完成路径
NSString *path = [[NSBundle mainBundle] pathForResource:imgName ofType:nil];

// 这里的参数不能在传递图片名称了,这里需要传递一个图片的完整路径
UIImage *imgCat = [UIImage imageWithContentsOfFile:path];

// 把图片加载到数组中
[arrayM addObject:imgCat];
}

// 1. 设置UIImageView(图片框)的animationImages属性,这个属性包含的就是所有那些要执行动画的图片
self.imgViewCat.animationImages = arrayM;

// 2. 设置动画持续时间
self.imgViewCat.animationDuration = self.imgViewCat.animationImages.count * 0.01;

// 3. 设置动画是否需要重复播放
self.imgViewCat.animationRepeatCount = 1;

// 4. 开启动画
[self.imgViewCat startAnimating];

// 清空图片集合
// 这样写的问题是,当动画启动以后,动画还未开始执行,就已经让图片集合清空了,也就是说 self.imgViewCat.animationImages = nil; 里面已经没有图片了,所以动画就不执行了。

// 设置图片框在调用setAnimationImages:nil方法的是后延迟执行
[self.imgViewCat performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.imgViewCat.animationImages.count * 0.1];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UIImage ios UI