How to load GIF image in Swift? How to load GIF image in Swift? ios ios

How to load GIF image in Swift?


Load GIF image Swift :

## Reference.

#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)

Download Demo Code

OUTPUT :

iPhone 8 / iOS 11 / xCode 9

enter image description here


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