iOS开发iOS实现视频效果和部分动画效果

使用UIImageView播放动图

2016-01-06  本文已影响3788人  NewBug

动图大家都会想到gif图片,但是在iOS端不能够播放gif格式图片怎么办呢。。。

其实苹果为开发者提供的控件足以让图片动起来,下面我选其中的一种使用UIImageView让图片动起来。。。


播放动图其实就是有许多张图片让他一张一张显示出来,在mac系统下打开gif格式图片就会看到,一张一张的图片,我们使用UIImageView播放图片其实就是让图片以动画的形式一张一张的播放出来;

使用UIImageView播放动图需要用到这些属性:

animationImages指向了NSArray说明这个就是存放所有需要播放的图片的数组;

animationDuration这个就是控制图片播放时间的属性;

animationRepeatCount这个是动画循环次数,默认是0,不循环;

这是需要用到的方法:

startAnimating方法是开始播放图片;

stopAnimating方法是结束播放图片;

isAnimating方法是判断图片是不是在播放;

下面直接上代码:

@property (nonatomic, strong)UIImageView *imageView;

首先创建存放图片的数组,并把图片存放到可变数组中:

NSMutableArray *tempArr = [NSMutableArray array];

for (int i = 0; i < count; i ++) {

//从bundle中获取的无缓存(图片所占用的内存会在一些特定操作后清除)

//behavior是定义的宏,是图片名字(例:head_01.jpg)

NSString *strImage = [NSString stringWithFormat:@"%@_%02d.jpg",behavior,i];

UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:strImage ofType:nil]];

[tempArr addObject:image];

}

//把存放图片的数组传给UIImageView的播放动画的数组

self.imageView.animationImages = tempArr;

//设置动画播放时间

self.imageView.animationDuration = 5.0f;

//设置动画连续播放次数

self.imageView.animationRepeatCount = 1;

//开始播放动图

[self.imageView startAnimating];

//此时完事,但是有一个致命性问题,你看一下内存使用情况,已经要爆了吧,下面就是内存优化问题了

//当动画播放结束时延迟一秒我们释放掉self.imageView.animationImages的image对象

[self.imageView performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.imageView.animationDuration + 1.0f];

补充:如果使用bundle获取图片帧不要把图片拖到Assets.xcassets中获取,因为bundle获取的是当前程序可执行文件所在的目录下,而Assets.xcassets中得图片在编译时会被打包成Assets.car文件(想要获取Assets.xcassets中图片必须使用[UIImage imageNamed:]加载)。

上一篇下一篇

猜你喜欢

热点阅读