Skip to content

Commit 4d35d16

Browse files
authored
Merge pull request #75 from SDWebImage/bugfix_indicator_watchOS
Fix the issue when Indicator is hidden, which still preserve the layout on watchOS (have no issues on iOS/tvOS/macOS)
2 parents ee786be + 0cde522 commit 4d35d16

File tree

5 files changed

+40
-4
lines changed

5 files changed

+40
-4
lines changed

Example/SDWebImageSwiftUIDemo-macOS/AppDelegate.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,20 @@ class AppDelegate: NSObject, NSApplicationDelegate {
3636
SDImageCodersManager.shared.addCoder(SDImageWebPCoder.shared)
3737
SDImageCodersManager.shared.addCoder(SDImageSVGCoder.shared)
3838
SDImageCodersManager.shared.addCoder(SDImagePDFCoder.shared)
39+
// Dynamic check to support vector format for both WebImage/AnimatedImage
40+
SDWebImageManager.shared.optionsProcessor = SDWebImageOptionsProcessor { url, options, context in
41+
var options = options
42+
var context = context
43+
if let _ = context?[.animatedImageClass] as? SDAnimatedImage.Type {
44+
// AnimatedImage supports vector rendering, should not force decode
45+
options.insert(.avoidDecodeImage)
46+
} else {
47+
// WebImage supports bitmap rendering only
48+
context?[.svgPrefersBitmap] = true
49+
context?[.pdfPrefersBitmap] = true
50+
}
51+
return SDWebImageOptionsResult(options: options, context: context)
52+
}
3953
}
4054

4155
func applicationWillTerminate(_ aNotification: Notification) {

Example/SDWebImageSwiftUIDemo-tvOS/AppDelegate.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,20 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
3333
SDImageCodersManager.shared.addCoder(SDImageWebPCoder.shared)
3434
SDImageCodersManager.shared.addCoder(SDImageSVGCoder.shared)
3535
SDImageCodersManager.shared.addCoder(SDImagePDFCoder.shared)
36+
// Dynamic check to support vector format for both WebImage/AnimatedImage
37+
SDWebImageManager.shared.optionsProcessor = SDWebImageOptionsProcessor { url, options, context in
38+
var options = options
39+
var context = context
40+
if let _ = context?[.animatedImageClass] as? SDAnimatedImage.Type {
41+
// AnimatedImage supports vector rendering, should not force decode
42+
options.insert(.avoidDecodeImage)
43+
} else {
44+
// WebImage supports bitmap rendering only
45+
context?[.svgPrefersBitmap] = true
46+
context?[.pdfPrefersBitmap] = true
47+
}
48+
return SDWebImageOptionsResult(options: options, context: context)
49+
}
3650

3751
return true
3852
}

Example/SDWebImageSwiftUIDemo-watchOS WatchKit Extension/ExtensionDelegate.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ class ExtensionDelegate: NSObject, WKExtensionDelegate {
2020
SDImageCodersManager.shared.addCoder(SDImageWebPCoder.shared)
2121
SDImageCodersManager.shared.addCoder(SDImageSVGCoder.shared)
2222
SDImageCodersManager.shared.addCoder(SDImagePDFCoder.shared)
23+
// Dynamic check to support vector format for WebImage
24+
SDWebImageManager.shared.optionsProcessor = SDWebImageOptionsProcessor { url, options, context in
25+
var context = context
26+
// WebImage supports bitmap rendering only
27+
context?[.svgPrefersBitmap] = true
28+
context?[.pdfPrefersBitmap] = true
29+
return SDWebImageOptionsResult(options: options, context: context)
30+
}
2331
}
2432

2533
func applicationDidBecomeActive() {

Example/SDWebImageSwiftUIDemo/AppDelegate.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,13 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
2323
SDImageCodersManager.shared.addCoder(SDImageWebPCoder.shared)
2424
SDImageCodersManager.shared.addCoder(SDImageSVGCoder.shared)
2525
SDImageCodersManager.shared.addCoder(SDImagePDFCoder.shared)
26-
// Dynamic check to support both WebImage/AnimatedImage
26+
// Dynamic check to support vector format for both WebImage/AnimatedImage
2727
SDWebImageManager.shared.optionsProcessor = SDWebImageOptionsProcessor { url, options, context in
28+
var options = options
2829
var context = context
2930
if let _ = context?[.animatedImageClass] as? SDAnimatedImage.Type {
30-
// AnimatedImage supports vector rendering
31+
// AnimatedImage supports vector rendering, should not force decode
32+
options.insert(.avoidDecodeImage)
3133
} else {
3234
// WebImage supports bitmap rendering only
3335
context?[.svgPrefersBitmap] = true

SDWebImageSwiftUI/Classes/Indicator/Indicator.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ struct IndicatorViewModifier<T> : ViewModifier where T : View {
3838
content
3939
if imageManager.isLoading {
4040
indicator.content($imageManager.isLoading, $imageManager.progress)
41-
} else {
42-
indicator.content($imageManager.isLoading, $imageManager.progress).hidden()
4341
}
4442
}
4543
}

0 commit comments

Comments
 (0)