iOS显示GIF图片

什么是GIF

GIF(Graphics Interchange Format)的原义是“图像互换格式”,是CompuServe公司在 1987年开发的图像文件格式。GIF文件的数据,是一种基于LZW算法的连续色调的无损压缩格式。其压缩率一般在50%左右,它不属于任何应用程序。目前几乎所有相关软件都支持它,公共领域有大量的软件在使用GIF图像文件。GIF图像文件的数据是经过压缩的,而且是采用了可变长度等压缩算法。GIF格式的另一个特点是其在一个GIF文件中可以存多幅彩色图像,如果把存于一个文件中的多幅图像数据逐幅读出并显示到屏幕上,就可构成一种最简单的动画。(百度百科)

iOS中GIF图片显示

iOS中最常用的图片显示控件是UIImageView,最简单的代码示例如下:

let imageView = UIImageView(frame: CGRect.zero)
let url = NSBundle.mainBundle().pathForResource("cat", ofType: "gif")!
let image = UIImage(contentsOfFile: url)
imageView.image = image

但是当我们这么做的时候发现GIF并没有动起来,而是取了第一帧做静态图片.那么怎么解决呢?最简单的方法是利用UIImageViewanimationImages,或者利用UIImageanimatedImageWithImages(images:, duration: )来获取动态的图片.那么难点就在于拆解GIF为一组图片.这时候就需要用到ImageIO的一个简单的拆分功能了,代码如下:

let url = NSBundle.mainBundle().pathForResource("cat", ofType: "gif")!
let data = NSData(contentsOfFile: url)!
let src = CGImageSourceCreateWithData(data, nil)!
var images = [UIImage]()
let count = CGImageSourceGetCount(src)
for index in 0..

在之后就非常简单了,如利用UIImage的动态图片获取方法:

imageView.image = UIImage.animatedImageWithImages(images, duration: 0.25)

再如直接使用UIImageView设置一组动态图:

imageView.animationImages = images
imageView.animationDuration = 1.0/30.0 // 默认1/图片数量
imageView.animationRepeatCount = 10    // 默认 0(无限)

你可能感兴趣的:(iOS显示GIF图片)