Kingfisher
Kingfisher 는 웹에서 이미지를 다운로드하고 캐싱 할 수 있는 Swift 라이브러리이다.
보통 XCode 프로젝트 Asset에 이미지를 추가하여 이미지를 로드하는 경우도 있지만,
네트워킹을 통해 웹의 이미지를 로드하는 경우는 일일이 이미지를 저장하여 불러오는 것이 불가능하다.
→ 이때 Kingfisher 라이브러리를 사용하면 웹 이미지를 보여줄 수 있다.
Kingfisher 특징
•
비동기로 이미지를 다운로드하고 캐싱한다.
•
URLSession 기반 네트워킹 또는 로컬 제공 데이터에서 이미지를 로드한다.
•
이미지 프로세서와 필터가 제공된다.
•
메모리와 디스크를 위한 다중 계층 하이브리드 캐시이다.
•
캐시 동작을 상세하게 제어한다 (만료 날짜 및 크기 제한 등 사용자 지정이 가능하다)
•
독립적인 구성요소로 필요에 따라 다운로더, 캐싱 시스템, 이미지 프로세서를 별도로 사용할 수 있다.
•
이미지를 미리 가져오고 캐시에 표시할 수 있다.
•
URL에서 직접 이미지를 설정할 수 있도록 UIImageView, NSImageView, NSButton, UIButton을 지원한다.
•
이미지 설정 시 전환 애니메이션을 제공한다.
•
이미지를 로드하는 동안 자리 표시자와 표시기를 사용자 지정할 수 있다.
•
쉽게 확장 가능한 이미지 처리와 이미지 형식을 제공한다.
•
낮은 데이터 모드를 지원한다.
•
SwiftUI를 지원한다.
Kingfisher 사용해보기
import Kingfisher
let imageURL = "https://cdn.clien.net/web/api/file/F01/3026181/26c0c7097b4545faa89.JPG"
let url = URL(string: imageURL)
imageView.kf.setImage(with: url)
Swift
복사
Kingfisher는 URL에서 이미지를 다운로드하고 메모리 캐시와 디스크 캐시에 모두 보낸 후, imageView에 표시한다.
나중에 같은 URL로 이미지를 로드할 경우, 캐시에서 이미지를 가져와 바로 보여준다.
→ 장점!!
또한
어려운 작업을 간단하게 수행할 수 있다는 장점!
•
고해상도 이미지 다운로드하기
•
이미지 보기 크기와 일치하도록 다운 샘플링하기
•
주어진 반경으로 모서리를 둥글게 만들기
•
다운로드 하는 동안 시스템 표시기와 자리 표시자 이미지를 표시하기
•
fade-in 애니메이션 효과 주기
•
큰 이미지는 나중에 사용할 수 있도록 디스크에 캐시되어 상세 보기에서 다시 다운로드하지 않기
•
작업 완료시 성공 여부에 관계없이 콘솔 로그 프린트하기