라벨이 Kingfisher인 게시물 표시

[iOS] Kingfisher 둘러보기

이미지
[iOS] Kingfisher 둘러보기 이미지 서버에서 이미지를 가져다 표시해줄 때 항상 쓰던 라이브러리 입니다. 어떤 기능이 있는지 살펴보기 전부터 웹에서 주소로 이미지를 가져올 때는 항상 써서, 이미지를 불러오는 라이브러리 인 줄 알았습니다. 하지만 본래의 목적은 이미지 캐싱이라는 것을 알게 되었고, 이번기회에 어떤 기능이 있는지 살펴보겠습니다. 내용은 Cheat Sheet 를 참고했습니다. 이미지 로딩 저도 이 기능 때문에 사용하는 줄 알았던 이미지 로딩입니다. 사용법은 굉장히 간단합니다. 이미지 뷰를 포함해(NSImageView, UIButton and NSButton)에 Extension 으로 구현되에 있기 때문에 setImage 를 사용해 이미지를 설정하면 됩니다. import Kingfisher let url = URL(string: "https://example.com/image.png") imageView.kf.setImage(with: url) 내부의 동작과정은 다음과 같습니다. url.absoluteString 로 캐싱된 이미지가 있는지 확입합니다. 만약 이미지가 캐싱되어 있어서 찾으면(메모리, 디스크 중), imageView.image에 나타냅니다. 만약 찾지 못한다면, url로 요청을 날려 이미지를 다운받습니다. 다운받은 데이터를 UIImage object로 변환합니다. 변환한 이미지를 메모리나 티스크에 캐싱합니다. 이미지 뷰에 표시합니다. 이미지 다운로드 이미지뷰이 이미지를 설정할 때 캐싱이 되어있지 않으면 다운로드 합니다. case .network(let resource): let downloader = options.downloader ?? self.downloader let task = downloader.downloadImage( with: resource.downloadURL, options: opti