File tree Expand file tree Collapse file tree 5 files changed +24
-10
lines changed
Examples/DemosApp/DemosApp
Assets.xcassets/avatar_placeholder.imageset
ComponentsPreview/PreviewPages Expand file tree Collapse file tree 5 files changed +24
-10
lines changed Original file line number Diff line number Diff line change 1717 "info" : {
1818 "author" : " xcode" ,
1919 "version" : 1
20- },
21- "properties" : {
22- "template-rendering-intent" : " template"
2320 }
2421}
Original file line number Diff line number Diff line change @@ -35,6 +35,11 @@ struct ButtonPreview: View {
3535 Text ( " Leading " ) . tag ( ButtonVM . ImageLocation. leading)
3636 Text ( " Trailing " ) . tag ( ButtonVM . ImageLocation. trailing)
3737 }
38+ Picker ( " Image Rendering Mode " , selection: self . $model. imageRenderingMode) {
39+ Text ( " Default " ) . tag ( Optional< ImageRenderingMode> . none)
40+ Text ( " Template " ) . tag ( ImageRenderingMode . template)
41+ Text ( " Original " ) . tag ( ImageRenderingMode . original)
42+ }
3843 Picker ( " Image Source " , selection: self . $model. imageSrc) {
3944 Text ( " SF Symbol " ) . tag ( ButtonVM . ImageSource. sfSymbol ( " camera.fill " ) )
4045 Text ( " Local " ) . tag ( ButtonVM . ImageSource. local ( " avatar_placeholder " ) )
Original file line number Diff line number Diff line change 11import Foundation
22
3- /// Defines the image source options for a button.
43extension ButtonVM {
4+ /// Defines the image source options for a button.
55 public enum ImageSource : Hashable {
66 /// An image loaded from a system SF Symbol.
77 ///
Original file line number Diff line number Diff line change @@ -30,6 +30,9 @@ public struct ButtonVM: ComponentVM {
3030 /// Defaults to `.leading`.
3131 public var imageLocation : ImageLocation = . leading
3232
33+ /// Defines how image is rendered.
34+ public var imageRenderingMode : ImageRenderingMode ?
35+
3336 /// The source of the image to be displayed.
3437 public var imageSrc : ImageSource ?
3538
@@ -184,15 +187,14 @@ extension ButtonVM {
184187extension ButtonVM {
185188 var image : UIImage ? {
186189 guard let imageSrc else { return nil }
187- switch imageSrc {
190+
191+ let image = switch imageSrc {
188192 case . sfSymbol( let name) :
189- return UIImage ( systemName: name) ? . withTintColor (
190- self . foregroundColor. uiColor,
191- renderingMode: . alwaysOriginal
192- )
193+ UIImage ( systemName: name)
193194 case . local( let name, let bundle) :
194- return UIImage ( named: name, in: bundle, compatibleWith: nil )
195+ UIImage ( named: name, in: bundle, compatibleWith: nil )
195196 }
197+ return image? . withRenderingMode ( self . imageRenderingMode)
196198 }
197199}
198200
Original file line number Diff line number Diff line change @@ -26,6 +26,16 @@ extension ImageRenderingMode {
2626 }
2727}
2828
29+ extension UIImage {
30+ func withRenderingMode( _ mode: ImageRenderingMode ? ) -> UIImage {
31+ if let mode {
32+ return self . withRenderingMode ( mode. uiImageRenderingMode)
33+ } else {
34+ return self
35+ }
36+ }
37+ }
38+
2939// MARK: - SwiftUI Helpers
3040
3141extension ImageRenderingMode {
You can’t perform that action at this time.
0 commit comments