美文网首页
用UIimage 显示gif 文件

用UIimage 显示gif 文件

作者: 化二缺 | 来源:发表于2019-12-27 15:05 被阅读0次
func showgifWithName(name:String,sender:UIButton){
        // 1.获取图片路径。
               guard let filePath = Bundle.main.path(forResource: name, ofType: nil) else { return }
               //根据路径转为data
               guard let fileData = NSData(contentsOfFile: filePath) else { return }
               // 2.根据Data获取CGImageSource对象
               guard let imageSource = CGImageSourceCreateWithData(fileData, nil) else { return }
               // 3.获取gif图片中图片的个数
               let frameCount = CGImageSourceGetCount(imageSource)
               //获取每一帧图片的时间。
               var duration : TimeInterval = 0
               //图片数组
               var images = [UIImage]()
        for i in 0..<frameCount {
            // 3.1.获取图片
            guard let cgImage = CGImageSourceCreateImageAtIndex(imageSource, i, nil) else { continue }
            // 3.2.获取时长 每一帧的时间。
            guard let properties = CGImageSourceCopyPropertiesAtIndex(imageSource, i, nil) else {continue}
            guard let gifInfo = (properties as NSDictionary)[kCGImagePropertyGIFDictionary as String] as? NSDictionary else {continue}
            guard let frameDuration = (gifInfo[kCGImagePropertyGIFDelayTime as String] as? NSNumber) else { continue }
            duration += frameDuration.doubleValue
            let image = UIImage(cgImage: cgImage)
            images.append(image)
        }
        // 4.播放图片
        sender.imageView?.animationImages = images
        sender.imageView?.animationDuration = 2.5
        //0无限播放。
        sender.imageView?.animationRepeatCount = 0
        sender.imageView?.startAnimating()
    }

相关文章

网友评论

      本文标题:用UIimage 显示gif 文件

      本文链接:https://www.haomeiwen.com/subject/rhjdoctx.html