본문 바로가기
2023년 부터/iOS&Swift

[iOS]iOS 개발을 위한 필수 라이브러리: Kingfisher의 쉬운 사용법

by JeongUPark 2023. 11. 21.
반응형



이미지를 처리하는 과정은 모바일 앱 개발에서 중요한 부분입니다. 그중 서버나 외부에서 이미지를 가져올 경우 매번 다운로드하면 사용자의 사용성에 문제가 되므로 이를 해결하기 위해서 이미지 캐싱을 많이 사용합니다. Kingfisher는 이러한 과정을 효율적으로 만들어 줍니다. 그럼, Kingfisher에 대해 자세히 알아보겠습니다.

 

Kingfisher 란?

Kingfisher는 Swift로 작성된 라이브러리로, iOS 앱에서 이미지를 다운로드하고 캐싱하는 과정을 간소화해 줍니다. 네트워크로부터 비동기로 이미지를 불러오고, 캐시에 저장하며, 필요할 때 쉽게 불러올 수 있게 해 줍니다. 강력한 캐싱 기능과 함께 여러 가지 유용한 이미지 처리 기능을 제공합니다.

 

Kingfisher 사용 방법과 예시 코드

설치

Kingfishter를 사용하기 위해 먼저, Swift Package Manager난 CocoaPods 등을 통해 프로젝트에 추가해야 합니다. 저의 경우에는 CocoaPods를 사용하였습니다. Podfile에 다음을 추가해 주고

pod 'Kingfisher'


콘솔에서 pod install을 해주면 프로젝트에 추가됩니다.

사용예시

아래 코드와 같이 작성하면 UIImageView에 웹의 이미지를 표시할 수 있습니다.

import Kingfisher

let url = URL(string: "https://example.com/image.png")
imageView.kf.setImage(with: url)

 

위의 간단한 사용 이외에도 다양한 옵션을 통하여 사용 방법을 컨트롤할 수 있습니다. 그 자세한 내용은 Kingfisher Github와 Cheat Sheet에서 확인하시면 됩니다.

가능한 기능을 확인해 보면 

  • indicator 표시 (indicator)
  • 이미지 가져오는 동안 애니메이션 표출 (transition)
  • 이미지를 가져오는 시간이 짧아도 애니메이션을 적용 (forceTrasition)
  • 이미지(또는 데이터)를 다른 이미지로 변환(Processor)
  • 캐시 미 적용 (forceRefresh)
  • 캐시 이미지만 사용(onlyFromCache) 

등이 존재하며, 찾아보면 더 다양한 기능들이 존재합니다.

 

저 같은 경우에는 firebase에 있는 이미지를 가져오도록 Code를 작성하여 사용하였습니다.

    func setImage(with urlString: String) {
        ImageCache.default.retrieveImage(forKey: urlString, options: nil) { result in
            switch result {
            case .success(let value):
                if let image = value.image {
                    //캐시가 존재하는 경우
                    self.image = image
                } else {
                    //캐시가 존재하지 않는 경우
                    guard let url = URL(string: urlString) else { return }
                    self.kf.setImage(with: url) {
                        result in
                        switch result {
                        case .success(let value):
                            print("Task done for: \(value.source.url?.absoluteString ?? "")")
                        case .failure(let error):
                            print("Job failed: \(error.localizedDescription)")
                            self.image = UIImage(named: 디폴트 이미지)
                        }
                    }
                }
            case .failure(let error):
                print(error)
            }
        }
    }

결론

Kingfisher는 iOS 개발자에게 큰 도움이 되는 라이브러리입니다. 이를 통해 이미지 처리를 훨씬 간편하고 효율적으로 할 수 있으며, 앱의 성능도 개선할 수 있습니다. 여러분의 iOS 앱 개발에 Kingfisher를 활용해 보세요!

반응형