Ver Fonte

remove duplicated code in KFAnimatedImage

Yang Chao há 2 anos atrás
pai
commit
bf5c5859a1
1 ficheiros alterados com 25 adições e 29 exclusões
  1. 25 29
      Sources/SwiftUI/KFAnimatedImage.swift

+ 25 - 29
Sources/SwiftUI/KFAnimatedImage.swift

@@ -47,10 +47,17 @@ public struct KFAnimatedImage: KFImageProtocol {
     }
 }
 
-#if !os(macOS)
-/// A wrapped `UIViewRepresentable` of `AnimatedImageView`
+#if os(macOS)
+@available(macOS 11.0, *)
+typealias KFCrossPlatformViewRepresentable = NSViewRepresentable
+#else
 @available(iOS 14.0, tvOS 14.0, watchOS 7.0, *)
-public struct KFAnimatedImageViewRepresenter: UIViewRepresentable, KFImageHoldingView {
+typealias KFCrossPlatformViewRepresentable = UIViewRepresentable
+#endif
+
+/// A wrapped `UIViewRepresentable` of `AnimatedImageView`
+@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *)
+public struct KFAnimatedImageViewRepresenter: KFCrossPlatformViewRepresentable, KFImageHoldingView {
     public typealias RenderingView = AnimatedImageView
     public static func created(from image: KFCrossPlatformImage?, context: KFImage.Context<Self>) -> KFAnimatedImageViewRepresenter {
         KFAnimatedImageViewRepresenter(image: image, context: context)
@@ -59,35 +66,25 @@ public struct KFAnimatedImageViewRepresenter: UIViewRepresentable, KFImageHoldin
     var image: KFCrossPlatformImage?
     let context: KFImage.Context<KFAnimatedImageViewRepresenter>
     
-    public func makeUIView(context: Context) -> AnimatedImageView {
-        let view = AnimatedImageView()
-        
-        self.context.renderConfigurations.forEach { $0(view) }
-        
-        view.image = image
-        
-        // Allow SwiftUI scale (fit/fill) working fine.
-        view.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
-        view.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
-        return view
+    #if os(macOS)
+    public func makeNSView(context: Context) -> AnimatedImageView {
+        return makeImageView()
     }
     
-    public func updateUIView(_ uiView: AnimatedImageView, context: Context) {
-        uiView.image = image
+    public func updateNSView(_ nsView: AnimatedImageView, context: Context) {
+        updateImageView(nsView)
     }
-}
-#else
-@available(macOS 11.0, *)
-public struct KFAnimatedImageViewRepresenter: NSViewRepresentable, KFImageHoldingView {
-    public typealias RenderingView = AnimatedImageView
-    public static func created(from image: KFCrossPlatformImage?, context: KFImage.Context<Self>) -> KFAnimatedImageViewRepresenter {
-        KFAnimatedImageViewRepresenter(image: image, context: context)
+    #else
+    public func makeUIView(context: Context) -> AnimatedImageView {
+        return makeImageView()
     }
     
-    var image: KFCrossPlatformImage?
-    let context: KFImage.Context<KFAnimatedImageViewRepresenter>
+    public func updateUIView(_ uiView: AnimatedImageView, context: Context) {
+        updateImageView(uiView)
+    }
+    #endif
     
-    public func makeNSView(context: Context) -> AnimatedImageView {
+    private func makeImageView() -> AnimatedImageView {
         let view = AnimatedImageView()
         
         self.context.renderConfigurations.forEach { $0(view) }
@@ -100,11 +97,10 @@ public struct KFAnimatedImageViewRepresenter: NSViewRepresentable, KFImageHoldin
         return view
     }
     
-    public func updateNSView(_ nsView: AnimatedImageView, context: Context) {
-        nsView.image = image
+    private func updateImageView(_ imageView: AnimatedImageView) {
+        imageView.image = image
     }
 }
-#endif
 
 #if DEBUG
 @available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *)