Explorar o código

Use any view ext

onevcat %!s(int64=6) %!d(string=hai) anos
pai
achega
ca2c84da08

+ 2 - 3
Demo/Demo/Kingfisher-Demo/ViewControllers/SwiftUIScreens/SwiftUIList.swift

@@ -38,8 +38,7 @@ struct SwiftUIList : View {
                 Spacer()
 
                 KFImage(
-                    URL(string: "https://github.com/onevcat/Flower-Data-Set/raw/master/rose/rose-\(i).jpg")!,
-                    options: [.transition(.fade(3))]
+                    URL(string: "https://github.com/onevcat/Flower-Data-Set/raw/master/rose/rose-\(i).jpg")!
                 )
                 .resizable()
                 .onSuccess { r in
@@ -58,7 +57,7 @@ struct SwiftUIList : View {
                             .frame(width: 80, height: 80)
                             .padding(20)
                         Text("Loading...").font(.largeTitle)
-                    }
+                    }.foregroundColor(.gray)
 
                 }
                 .cancelOnDisappear(true)

+ 2 - 2
Sources/SwiftUI/ImageBinder.swift

@@ -35,7 +35,7 @@ extension KFImage {
         let source: Source
         let options: KingfisherOptionsInfo?
 
-        public var didChange = PassthroughSubject<KFCrossPlatformImage?, Never>()
+        public var didChange = PassthroughSubject<Void, Never>()
         var downloadTask: DownloadTask?
 
         let onFailureDelegate = Delegate<KingfisherError, Void>()
@@ -43,7 +43,7 @@ extension KFImage {
         let onProgressDelegate = Delegate<(Int64, Int64), Void>()
 
         var image: Kingfisher.KFCrossPlatformImage? {
-            didSet { didChange.send(image) }
+            didSet { didChange.send() }
         }
 
         init(source: Source, options: KingfisherOptionsInfo?) {

+ 5 - 6
Sources/SwiftUI/KFImage.swift

@@ -65,14 +65,13 @@ public struct KFImage: View {
 
     public var body: some View {
         if let image = binder.image {
-            let result = configs.reduce(Image(crossPlatformImage: image)) {
-                current, config in
-                config(current)
-            }
-            return AnyView(result)
+            return configs.reduce(Image(crossPlatformImage: image)) {
+                current, config in config(current)
+            }.eraseToAnyView()
         } else {
-            let result = (placeholder ?? AnyView(Image(crossPlatformImage: .init())))
+            let result = (placeholder ?? Image(crossPlatformImage: .init()).eraseToAnyView())
                 .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
+            
             let onAppear = result.onAppear { [unowned binder] in
                 binder.start()
             }