Search code examples
swiftmacosimageswiftuianimated-gif

SwiftUI display gif image


The way to display animated gif image in swiftUI

because of Image

Image("fall-leaves")

does not support gifs

answer below


Solution

  • Easiest and fastest way to display gif image in swiftUI - is to use Preview / QuickLook (QL) / QLPreviewView

    Quartz available only in macOS 10.4+ https://developer.apple.com/documentation/quartz

    import SwiftUI
    import Quartz
    
    struct QLImage: NSViewRepresentable {
        var url: URL
        
        func makeNSView(context: NSViewRepresentableContext<QLImage>) -> QLPreviewView {
            let preview = QLPreviewView(frame: .zero, style: .normal)
            preview?.autostarts = true
            preview?.previewItem = url as QLPreviewItem
            
            return preview ?? QLPreviewView()
        }
        
        func updateNSView(_ nsView: QLPreviewView, context: NSViewRepresentableContext<QLImage>) {
            nsView.previewItem = url as QLPreviewItem
        }
        
        typealias NSViewType = QLPreviewView
    }