播放gif图

先看下模拟器的效果


播放gif图_第1张图片
13.gif

gif图其实也是一张张的图片组合在一起,1s如果能播放15帧的话,人眼就不会感到明显的卡顿,一般电影院中的电影是一秒30帧,最近李安拍的新电影,比利林恩是一秒120帧

  • 我们使用系统一个框架ImageIO进行GIF图播放,大概思路是,首先把gif图转换成Data数据,然后通过Data数据获取到CGImageSource,然后通过这个CGImageSource获取一帧一帧的画面和总时间,然后用Image的动画组进行播放

// MARK:- 播放gif图
extension ViewController {
    func playGifPic() {
        // 1、找到gif,并且转成data类型数据
        guard let path = Bundle.main.path(forResource: "demo", ofType: "gif") else {
            return
        }
        guard let data = NSData(contentsOfFile: path) else {
            return
        }
        
        // 2、从data中读取数据,将data转成CGImageSource对象
        guard let imageSource = CGImageSourceCreateWithData(data, nil) else {
            return
        }
        let imageCount = CGImageSourceGetCount(imageSource)
        
        
        // 3、遍历所有的图片
        var imgs = [UIImage]()
        var totalDuaration: TimeInterval = 0
        for i in 0..

你可能感兴趣的:(播放gif图)