From a5c8082b796ec22ee824e6a29c303c2c4fd1f92c Mon Sep 17 00:00:00 2001 From: DreamPiggy Date: Sat, 2 Nov 2019 05:17:05 +0800 Subject: [PATCH] Fix the issue that WebImage will stop download after first progressive loading image loaded --- Example/SDWebImageSwiftUIDemo/ContentView.swift | 1 + SDWebImageSwiftUI/Classes/ImageManager.swift | 2 ++ SDWebImageSwiftUI/Classes/WebImage.swift | 9 ++++++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Example/SDWebImageSwiftUIDemo/ContentView.swift b/Example/SDWebImageSwiftUIDemo/ContentView.swift index db42cea..fd3871c 100644 --- a/Example/SDWebImageSwiftUIDemo/ContentView.swift +++ b/Example/SDWebImageSwiftUIDemo/ContentView.swift @@ -29,6 +29,7 @@ struct ContentView: View { "https://isparta.github.io/compare-webp/image/gif_webp/webp/2.webp", "https://nokiatech.github.io/heif/content/images/ski_jump_1440x960.heic", "https://nokiatech.github.io/heif/content/image_sequences/starfield_animation.heic", + "https://www.sample-videos.com/img/Sample-png-image-1mb.png", "https://nr-platform.s3.amazonaws.com/uploads/platform/published_extension/branding_icon/275/AmazonS3.png", "http://via.placeholder.com/200x200.jpg"] @State var animated: Bool = true // You can change between WebImage/AnimatedImage diff --git a/SDWebImageSwiftUI/Classes/ImageManager.swift b/SDWebImageSwiftUI/Classes/ImageManager.swift index 755059c..f3bd36c 100644 --- a/SDWebImageSwiftUI/Classes/ImageManager.swift +++ b/SDWebImageSwiftUI/Classes/ImageManager.swift @@ -12,6 +12,7 @@ import SDWebImage class ImageManager : ObservableObject { @Published var image: PlatformImage? @Published var isLoading: Bool = false + @Published var isIncremental: Bool = false @Published var progress: CGFloat = 0 var manager = SDWebImageManager.shared @@ -56,6 +57,7 @@ class ImageManager : ObservableObject { if let image = image { self.image = image } + self.isIncremental = !finished if finished { self.isLoading = false self.progress = 1 diff --git a/SDWebImageSwiftUI/Classes/WebImage.swift b/SDWebImageSwiftUI/Classes/WebImage.swift index 7a6453f..708104d 100644 --- a/SDWebImageSwiftUI/Classes/WebImage.swift +++ b/SDWebImageSwiftUI/Classes/WebImage.swift @@ -10,7 +10,7 @@ import SwiftUI import SDWebImage public struct WebImage : View { - static var emptyImage = Image(platformImage: PlatformImage()) + static var emptyImage = PlatformImage() var url: URL? var placeholder: Image? @@ -46,7 +46,7 @@ public struct WebImage : View { let view = image return AnyView(view) } else { - var image = placeholder ?? WebImage.emptyImage + var image = placeholder ?? Image(platformImage: WebImage.emptyImage) image = configurations.reduce(image) { (previous, configuration) in configuration(previous) } @@ -57,7 +57,10 @@ public struct WebImage : View { } } .onDisappear { - self.imageManager.cancel() + // When using prorgessive loading, the previous partial image will cause onDisappear. Filter this case + if self.imageManager.isLoading && !self.imageManager.isIncremental { + self.imageManager.cancel() + } } return AnyView(view) }