Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- apns
- Switch
- class
- segue
- IOS
- list
- 글또
- NotificationCenter
- protocol
- SWIFT
- http
- mvvm
- Observer
- error
- Refresh
- ScrollView
- Git
- 고차함수
- PushNotification
- uikit
- 화면전환
- escaping
- SWIFTUI
- calendar
- viewlifecycle
- array
- singleton
- struct
- self
- Animation
Archives
- Today
- Total
seong_hye, the developer
Swift) Kingfisher에 대해 알아보기 본문
📘 Kingfisher
Swift에서 널리 사용되는 이미지 다운로드 및 캐싱 라이브러리
특히 URL 기반 이미지 로딩을 간단하게 처리할 수 있고.
내부적으로 강력한 메모리/디스크 캐싱, 다운로드 관리, 프리페치, 리사이징, 리사이클링 등을 제공
Kingfisher = Swift에서 이미지 URL을 비동기 로딩 + 캐싱까지 한 번에 해주는 라이브러리
🔹 주요 기능
기능 | 설명 |
URL 이미지 다운로드 | imageView.kf.setImage(with: URL) 한 줄로 가능 |
메모리 + 디스크 캐싱 | 자동으로 처리 (옵션 조정 가능) |
SwiftUI 지원 | .kfImage 뷰로 간편하게 사용 가능 |
이미지 가공 | 리사이징, 블러, 라운딩, 필터 등 적용 가능 |
프리페칭 | 다가올 이미지 미리 다운로드 |
재사용 최적화 | 셀 재사용 상황에서 매우 효율적 |
프로그레스, 실패 처리 | 다운로드 상태 핸들링 지원 |
🔹 사용 방법
1. Kingfisher 설치
- XCode > File > Add Packages Dependencies...
URL : https://github.com/onevcat/Kingfisher
- pod file 설치 후 패키치 다운로드
pod 'Kingfisher'
2. 사용 코드
✅ UIKit 예시
import Kingfisher
let url = URL(string: "필요한 url 작성")
imageView.kf.steImage(with: url)
// indicator 표출 기능
imageView.kf.indicatorType = .activity
// 이미지를 가져오는 동안 애니메이션 표출
imageView.kf.setImage(
with: url,
placeholder: nil,
options: [.transition(.fade(1.2))],
completionHandler: nil
)
✅ SwiftUI 예시
import Kingfisher
import SwiftUI
struct ContentView: View {
let url = URL(string: "필요한 url")
var body: some View {
KFImage(url)
.resizable()
.scaledToFit()
.placeholder { // 이미지 로딩 중 보여줄 화면 또는 코드 }
.loadDiskFileSynchronously(true) // 디스크로부터 이미지 동기적으로 로드
.cacheMemoryOnly() // 메모리에만 캐시하고 디스크에는 캐시하지 않음
.fade(duration: 0.25) // 이미지로드가 완료되면 나타나게 할 애니메이션
🔹 캐싱 구조
종류 | 설명 |
Memory Cache | NSCache 기반, 앱 실행 중 유지 |
Disk Cache | 파일 시스템에 저장, 앱 재시작 후에도 유지 |
자동 정리 | 오래된/ 용량 큰 이미지 자동 제거 (설정 가능) |
✅ 캐시 직접 제어할 경우
ImageCache.default.clearMemoryCache()
ImageCache.default.clearDiskCache()
🔹 Kingfisher vs 경쟁 라이브러리
항목 | Kingfisher | SDWebImage | URLSession 직접 사용 |
사용 편의성 | 매우 간편 | 좋음 | 복잡함 |
캐시 자동화 | O | O | X -> 직접 구현 필요 |
SwiftUI 지원 | O -> KFImage | 제한적 | X |
가공 처리 | 필터, 변형 등 풍부 | 중간 | 직접 구현 |
'IOS' 카테고리의 다른 글
Swift) NSCache에 대해 알아보기 (0) | 2022.10.03 |
---|---|
Swift) Lottie 애니메이션 사용해보기 (0) | 2022.09.22 |
Swift) Cocoapods에 대해 알아보자 (0) | 2022.08.02 |
Swift) Alamofire에 대해 알아보자 (0) | 2022.08.02 |
Swift) WidgetKit이란? (0) | 2022.08.02 |
Comments