use DispatchQueue to support iOS 13&14

This commit is contained in:
Metin Güler 2023-01-11 18:22:02 +01:00
parent 8628deb1e4
commit 1fc66e816f
1 changed files with 17 additions and 7 deletions

View File

@ -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)
}
}