Async image loading with progress and cache for SwiftUI.
Going to Xcode File
> Add Packages...
and add the repository by giving the URL
https://github.com/bullinnyc/CachedAsyncImage
Enjoy!
import CachedAsyncImage
Note: placeholder
is an optional parameter.
let exampleUrl = "https://example.com/image.jpg"
CachedAsyncImage(
url: exampleUrl,
placeholder: {
// Create any view for placeholder (optional).
ZStack {
Color.yellow
ProgressView()
}
},
image: {
// Customize image.
Image(uiImage: $0)
.resizable()
.scaledToFill()
}
)
Note: placeholder
and error
is an optional parameters.
let exampleUrl = "https://example.com/image.jpg"
CachedAsyncImage(
url: exampleUrl,
placeholder: { progress in
// Create any view for placeholder (optional).
ZStack {
Color.yellow
ProgressView() {
VStack {
Text("Downloading...")
Text("\(progress) %")
}
}
}
},
image: {
// Customize image.
Image(uiImage: $0)
.resizable()
.scaledToFill()
},
error: { error in
// Create any view for error (optional).
ZStack {
Color.yellow
VStack {
Group {
Text("Error:")
.bold()
Text(error)
}
.font(.footnote)
.multilineTextAlignment(.center)
.foregroundStyle(.red)
}
.padding()
}
}
)
Note: The default value is 0
, e.g. is no count limit and is no total cost limit.
// Set image cache limit.
TemporaryImageCache.shared.setCacheLimit(
countLimit: 1000, // 1000 items
totalCostLimit: 1024 * 1024 * 200 // 200 MB
)
- iOS 14.0 +
- SwiftUI
- CachedAsyncImage is distributed under the MIT License.