iOS 앱에서 Kingfisher를 활용해 TMDB 포스터 이미지 최적화 로드하기
Swift 기반 오픈소스 이미지 다운로드/캐싱 라이브러리
비동기 네트워크 로드, 메모리·디스크 자동 캐싱, 옵션 커스터마이징 지원
UIImageView, UIButton, MKAnnotationView 등 다양한 뷰에 바로 적용 가능
CocoaPods
pod 'Kingfisher', '~> 8.0'
or
// Swift Package Manager
"https://github.com/onevcat/Kingfisher.git"
import Kingfisher
let url = URL(string: "https://image.tmdb.org/t/p/original\(posterPath)")
UIImageView
imageView.kf.setImage(with: url)
UIButton 에도
button.kf.setImage(with: url, for: .normal)
// MoviePosterCell.swift
func setImage(with path: String?) {
guard let path = path,
let url = URL(string: "https://image.tmdb.org/t/p/original\(path)")
else { return }
// 기본 로드 (비동기, placeholder·캐싱 자동)
posterButton.kf.setImage(with: url, for: .normal)
}
posterButton 에 kf.setImage 호출
.normal 상태에 맞춰 이미지 세팅
Kingfisher가 백그라운드에서 다운로드 → 메모리/디스크에 캐싱
스크롤 시 재사용 셀에서도 즉시 캐시된 이미지를 보여줌
// 캐시 삭제
ImageCache.default.clearMemoryCache()
ImageCache.default.clearDiskCache()