Swift 播放gif图片 - lidaoyuan/Notes GitHub Wiki
extension UIImageView {
func playGif(_ data: Data) {
guard let imageSource = CGImageSourceCreateWithData(data as CFData, nil) else { return }
let imageCount = CGImageSourceGetCount(imageSource)
var images = [UIImage]()
var totalDuration : TimeInterval = 0
for i in 0..<imageCount {
guard let cgImage = CGImageSourceCreateImageAtIndex(imageSource, i, nil) else { continue }
let image = UIImage(cgImage: cgImage)
if i == 0 {
self.image = image
}
images.append(image)
guard let properties = CGImageSourceCopyPropertiesAtIndex(imageSource, i, nil) else { continue }
guard let gifDict = (properties as NSDictionary)[kCGImagePropertyGIFDictionary] as? NSDictionary else { continue }
guard let frameDuration = gifDict[kCGImagePropertyGIFDelayTime] as? NSNumber else { continue }
totalDuration += frameDuration.doubleValue
}
animationImages = images
animationDuration = totalDuration
animationRepeatCount = 0
startAnimating()
}
}