iosswiftuiimageviewgif

How to use GIFs inside an iOS App without any Third Party Library using UIKit?


I am currently working on a project which depends heavily on GIFs. However, I never worked with GIFs in Swift for iOS before an I am pretty lost.

The first thing I tried was to import some GIFs to my Assets.xcassets folder. I realised that using an ImageSet for GIFs does not work.

So my first Question: How do I import GIFs into my project? And should I use only one resolution or are three the better way like for images?

Then I already checked out some questions about presenting a GIF inside a UIImageView, programmatically and via Storyboard. As I figured out, this is probably best possible by using an extension for the UIImage class. However, the Swift 4 examples didn't work for me because of some reason.

So my second Question: How do I use the imported GIFs inside my project and display them inside a UIImageView programmatically?


Solution

  • You have to manually decode GIF data, then you will be able to show it frame-by-frame. You will not have any simple answers here, bcs that's definitely very hard idea, try copy decoding algorithm from Third-Party and player or just use it. Something like SDWebImage will be the best option for you. Check SDAnimatedImagePlayer, SDWebAnimatedImage classes.