From 1fc66e816fc7710ff6f8a743474f1de3863f57c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Metin=20G=C3=BCler?= Date: Wed, 11 Jan 2023 18:22:02 +0100 Subject: [PATCH] use DispatchQueue to support iOS 13&14 --- Sources/SwiftUIGIF/SwiftUIGIF.swift | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/Sources/SwiftUIGIF/SwiftUIGIF.swift b/Sources/SwiftUIGIF/SwiftUIGIF.swift index c799cfc..2857d26 100644 --- a/Sources/SwiftUIGIF/SwiftUIGIF.swift +++ b/Sources/SwiftUIGIF/SwiftUIGIF.swift @@ -63,14 +63,24 @@ public class UIGIFImage: UIView { } func updateGIF(data: Data) { - Task { - imageView.image = await UIImage.gifImage(data: data) + updateWithImage { + UIImage.gifImage(data: data) } } func updateGIF(name: String) { - Task { - imageView.image = await UIImage.gifImage(name: name) + updateWithImage { + UIImage.gifImage(name: name) + } + } + + private func updateWithImage(_ getImage: @escaping () -> UIImage?) { + DispatchQueue.global(qos: .userInteractive).async { + let image = getImage() + + DispatchQueue.main.async { + self.imageView.image = image + } } } @@ -80,7 +90,7 @@ public class UIGIFImage: UIView { } public extension UIImage { - class func gifImage(data: Data) async -> UIImage? { + class func gifImage(data: Data) -> UIImage? { guard let source = CGImageSourceCreateWithData(data as CFData, nil) else { return nil @@ -111,13 +121,13 @@ public extension UIImage { duration: Double(duration) / 1000.0) } - class func gifImage(name: String) async -> UIImage? { + class func gifImage(name: String) -> UIImage? { guard let url = Bundle.main.url(forResource: name, withExtension: "gif"), let data = try? Data(contentsOf: url) else { return nil } - return await gifImage(data: data) + return gifImage(data: data) } }