https://github.com/marcbiosca/asyncimage
Simple iOS 13 AsyncImage
https://github.com/marcbiosca/asyncimage
asyncimage ios ios13 swift swiftui
Last synced: 8 months ago
JSON representation
Simple iOS 13 AsyncImage
- Host: GitHub
- URL: https://github.com/marcbiosca/asyncimage
- Owner: MarcBiosca
- License: mit
- Created: 2022-09-30T08:35:26.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-11-02T15:15:43.000Z (over 3 years ago)
- Last Synced: 2025-06-26T21:11:10.424Z (9 months ago)
- Topics: asyncimage, ios, ios13, swift, swiftui
- Language: Swift
- Homepage:
- Size: 33.2 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# AsyncImage
iOS >= 13 AsyncImage with the following characteristics:
- Loads the image when te view appears in the screen
- Cancel download request when it disappears
- (optional) in-memory cache to avoid too many URLRequest
- Thread safe
- Concurrency handling to avoid duplicate URLRequest
- Automatically reload when connectivity is regained
- Automatic retry when URLRequest fails
## Getting started
You can clone this repository and run the `AsyncImageDemo` App.
```swift
AsyncImage("https://picsum.photos/200/300".urlRequest)
.frame(width: 200, height: 200)
```
You can optionally use the `configuration` to apply modifiers to the Image rather than directly to the View returned by AsyncImage.
If not specified, default ones applied are: `resizable().renderingMode(.original)`
### Controlling the cache
> Warning: Make sure to create an ImageCache and PublisherCache object somewhere in your app/module and injected to the AsyncImage object. Do not create a new one per each image, otherwise it will not work as intended.
```swift
let imageCache = PublisherCacheFactory.makeTemporaryCache()
let publisherCache = ImageCacheFactory.makeTemporaryCache()
AsyncImage(
request: "https://picsum.photos/200/300".urlRequest,
imageCache: imageCache,
publisherCache: publisherCache
)
.frame(width: 200, height: 200)
```
## Install
### Swift Package Manager
In Xcode, right click your project and `Add Packages`, then enter the repository URL.
```
https://github.com/MarcBiosca/AsyncImage
```
If you are working with a package, add the repository URL in your `Package.swift`:
```swift
.package(url: "https://github.com/MarcBiosca/AsyncImage.git", from: "1.0.0")
```
### CocoaPods
Add the following line in your `Podfile`:
```
pod 'SimpleAsyncImage'
```