Skip to content

Commit 11c3829

Browse files
committed
Fix rendering mode in toolbar button by setting it on the UIImage itself
1 parent 88f2d67 commit 11c3829

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

SDWebImageSwiftUI/Classes/WebImage.swift

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ public struct WebImage : View {
1717
var placeholder: AnyView?
1818
var retryOnAppear: Bool = true
1919
var cancelOnDisappear: Bool = true
20+
21+
#if !os(macOS)
22+
var renderingMode: UIImage.RenderingMode? = nil
23+
#endif
2024

2125
@ObservedObject var imageManager: ImageManager
2226

@@ -123,6 +127,12 @@ public struct WebImage : View {
123127
#if os(macOS)
124128
result = Image(nsImage: image)
125129
#else
130+
var image = image
131+
132+
if let renderingMode = self.renderingMode {
133+
image = image.withRenderingMode(renderingMode)
134+
}
135+
126136
// Fix the SwiftUI.Image rendering issue, like when use EXIF UIImage, the `.aspectRatio` does not works. SwiftUI's Bug :)
127137
// See issue #101
128138
var cgImage: CGImage?
@@ -209,7 +219,20 @@ extension WebImage {
209219
/// Configurate this view's rendering mode.
210220
/// - Parameter renderingMode: The resizing mode
211221
public func renderingMode(_ renderingMode: Image.TemplateRenderingMode?) -> WebImage {
212-
configure { $0.renderingMode(renderingMode) }
222+
var result = configure { $0.renderingMode(renderingMode) }
223+
224+
#if !os(macOS)
225+
switch renderingMode {
226+
case .original:
227+
result.renderingMode = .alwaysOriginal
228+
case .template:
229+
result.renderingMode = .alwaysTemplate
230+
case nil:
231+
result.renderingMode = .automatic
232+
}
233+
#endif
234+
235+
return result
213236
}
214237

215238
/// Configurate this view's image interpolation quality

0 commit comments

Comments
 (0)