How to load GIF image in Swift?
Load GIF image Swift :
#1 : Copy the swift file from This Link:
#2 : Load GIF image Using Name
let jeremyGif = UIImage.gifImageWithName("funny") let imageView = UIImageView(image: jeremyGif) imageView.frame = CGRect(x: 20.0, y: 50.0, width: self.view.frame.size.width - 40, height: 150.0) view.addSubview(imageView)
#3 : Load GIF image Using Data
let imageData = try? Data(contentsOf: Bundle.main.url(forResource: "play", withExtension: "gif")!) let advTimeGif = UIImage.gifImageWithData(imageData!) let imageView2 = UIImageView(image: advTimeGif) imageView2.frame = CGRect(x: 20.0, y: 220.0, width: self.view.frame.size.width - 40, height: 150.0) view.addSubview(imageView2)
#4 : Load GIF image Using URL
let gifURL : String = "http://www.gifbin.com/bin/4802swswsw04.gif" let imageURL = UIImage.gifImageWithURL(gifURL) let imageView3 = UIImageView(image: imageURL) imageView3.frame = CGRect(x: 20.0, y: 390.0, width: self.view.frame.size.width - 40, height: 150.0) view.addSubview(imageView3)
OUTPUT :
iPhone 8 / iOS 11 / xCode 9
Simple extension for local gifs. Gets all the images from the gif and adds it to the imageView animationImages.
extension UIImageView { static func fromGif(frame: CGRect, resourceName: String) -> UIImageView? { guard let path = Bundle.main.path(forResource: resourceName, ofType: "gif") else { print("Gif does not exist at that path") return nil } let url = URL(fileURLWithPath: path) guard let gifData = try? Data(contentsOf: url), let source = CGImageSourceCreateWithData(gifData as CFData, nil) else { return nil } var images = [UIImage]() let imageCount = CGImageSourceGetCount(source) for i in 0 ..< imageCount { if let image = CGImageSourceCreateImageAtIndex(source, i, nil) { images.append(UIImage(cgImage: image)) } } let gifImageView = UIImageView(frame: frame) gifImageView.animationImages = images return gifImageView }}
To Use:
guard let confettiImageView = UIImageView.fromGif(frame: view.frame, resourceName: "confetti") else { return } view.addSubview(confettiImageView) confettiImageView.startAnimating()
Repeat and duration customizations using UIImageView APIs.
confettiImageView.animationDuration = 3confettiImageView.animationRepeatCount = 1
When you are done animating the gif and want to release the memory.
confettiImageView.animationImages = nil
First install a pod :-
pod 'SwiftGifOrigin'
and import in your class
import SwiftGifOrigin
then write this code in viewDidiload method
yourImageView.image = UIImage.gif(name: "imageName")
Note:- plz do not include the file extension in the gif file name. Ex:-
//Don't Do thisyourImageView.image = UIImage.gif(name: "imageName.gif")
See source: https://github.com/swiftgif/SwiftGif