There is also an explanation in English.
💁🏻♂️ 순수한 Swift를 사용하여 구현되었습니다.
💁🏻♂️ E-Tag를 기반으로 하여 이미지를 캐싱합니다.
💁🏻♂️ UI의존성 없이 캐싱된 이미지를 가져올 수 있습니다.
✅ E-Tag를 Base로 캐싱되어 URL은 그대로이지만 이미지가 변경된 경우 새로운 이미지로 업데이트 합니다.
✅ UI와 의존성이 없어, SwiftUI, UIKit 모두에서 자유롭게 사용할 수 있습니다.
✅ 메모리 캐싱은 기본적으로 제공되며, 디스크 캐싱은 필요에 따라 On/Off할 수 있습니다.
간단한 코드로, 캐싱된 이미지를 불러올 수 있습니다.
import SwiftUI
import CachedImageLoader
public struct DummyView: View {
private let imageLoader = CachedImageLoader.default
@State var image: UIImage? = nil
public var body: some View {
Image(uiImage: image)
.task {
guard let data = try? await imageLoader.load(urls.randomElement()) else { return }
self.image = UIImage(data: data)
}
}
}
간단한 코드로, 캐싱된 데이터를 제거할 수 있습니다.
import SwiftUI
import CachedImageLoader
public struct DummyView: View {
private let imageLoader = CachedImageLoader.default
public var body: some View {
// State를 Binding합니다.
Button("clear Cache") {
Task {
await imageLoader.clearCache()
}
}
}
}
SwiftUI를 위해 구현된 CachedAsyncImage
를 사용할 수 있습니다.
import SwiftUI
import CachedAsyncImage
struct SampleView: View {
let url: URL
var body: some View {
CachedAsyncImage(url: url, imageLoader: .default) { image in
image
.resizable()
.scaledToFit()
.frame(width: 100)
} placeholder: {
ProgressView()
}
}
}
dependencies: [
.package(url: "https://github.com/Monsteel/CachedImageLoader.git", .upToNextMajor(from: "0.0.1"))
]
회사 | 설명 |
---|---|
SwiftUI와 UIKit을 사용하여 개발된 정육각 커머스 앱에서 이미지 로딩을 위해 사용하고 있습니다. | |
SwiftUI를 사용하여 개발된 초록마을 커머스 앱에서 이미지 로딩을 위해 사용하고 있습니다. |
개선의 여지가 있는 모든 것들에 대해 열려있습니다.
PullRequest를 통해 기여해주세요. 🙏
CachedImageLoader 는 MIT 라이선스로 이용할 수 있습니다. 자세한 내용은 라이선스 파일을 참조해 주세요.
CachedImageLoader is available under the MIT license. See the LICENSE file for more info.
이영은(Tony) | [email protected]