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()
}
网友评论