From cfb41098743ae8a053e9368490ed670c4228c009 Mon Sep 17 00:00:00 2001 From: leoz Date: Sun, 10 Sep 2023 18:23:41 -0400 Subject: [PATCH] Align interface with AsyncImage --- Demo/CachedImageDemo/ContentView.swift | 11 ++++++++--- Sources/CachedImage/CachedImage.swift | 21 +++++++++++++-------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/Demo/CachedImageDemo/ContentView.swift b/Demo/CachedImageDemo/ContentView.swift index e32157a..582395c 100644 --- a/Demo/CachedImageDemo/ContentView.swift +++ b/Demo/CachedImageDemo/ContentView.swift @@ -22,13 +22,18 @@ struct ContentView: View { List(posters, id: \.self) { url in CachedImage( url: url, - placeholder: { Text("Loading ...") }, content: { image in - image.resizable() + image + .resizable() .aspectRatio(contentMode: .fit) + }, + placeholder: { + Text("Loading ...") } ) - .frame(idealHeight: geometry.size.width / 2 * 3) // 2:3 aspect ratio + .frame( + idealHeight: geometry.size.width / 2 * 3 + ) // 2:3 aspect ratio } } } diff --git a/Sources/CachedImage/CachedImage.swift b/Sources/CachedImage/CachedImage.swift index 0356204..db76222 100644 --- a/Sources/CachedImage/CachedImage.swift +++ b/Sources/CachedImage/CachedImage.swift @@ -9,20 +9,25 @@ import SwiftUI public struct CachedImage: View { - @StateObject private var loader: ImageLoader - private let placeholder: Placeholder - private let content: (Image) -> Content private let url: URL + private let content: (Image) -> Content + private let placeholder: Placeholder + @StateObject private var loader: ImageLoader public init( url: URL, - placeholder: @escaping () -> Placeholder, - content: @escaping (Image) -> Content + content: @escaping (Image) -> Content, + placeholder: @escaping () -> Placeholder ) { - self.placeholder = placeholder() - self.content = content self.url = url - _loader = StateObject(wrappedValue: ImageLoader(url: url, cache: Environment(\.imageCache).wrappedValue)) + self.content = content + self.placeholder = placeholder() + _loader = StateObject( + wrappedValue: ImageLoader( + url: url, + cache: Environment(\.imageCache).wrappedValue + ) + ) } public var body: some View {