[TIL] Kingfisher

Eden·2025년 7월 21일

Kingfisher는 Swift에서 이미지 다운로드와 캐싱을 간편하게 처리하기 위한 오픈소스 라이브러리입니다.
네트워크 이미지를 쉽게 불러오고, 성능 최적화를 위한 캐싱 기능을 제공합니다.


1. Kingfisher란?

  • 네트워크 이미지를 다운로드하고, 메모리 및 디스크에 캐싱
  • 비동기 처리 지원 → UI 렌더링 방해 없음
  • URL로 이미지 로딩, 플레이스홀더 제공, 이미지 처리 지원

2. 설치 방법

Swift Package Manager (SPM)

.package(url: "https://github.com/onevcat/Kingfisher.git", from: "7.0.0")

3. 기본 사용법

3.1 이미지 로드

import Kingfisher

let url = URL(string: "https://example.com/image.jpg")
imageView.kf.setImage(with: url)
  • kf 네임스페이스를 통해 Kingfisher 기능 사용
  • URL만 지정하면 자동으로 다운로드 및 캐싱 처리

3.2 플레이스홀더 설정

imageView.kf.setImage(
    with: url,
    placeholder: UIImage(named: "placeholder")
)

3.3 옵션 사용 (캐시 정책, 애니메이션 등)

imageView.kf.setImage(
    with: url,
    options: [
        .transition(.fade(0.3)),
        .cacheOriginalImage
    ]
)

4. 이미지 캐싱

  • 메모리 캐시: 빠른 접근을 위해 RAM에 저장
  • 디스크 캐시: 앱 종료 후에도 유지
  • 기본적으로 메모리 + 디스크 캐시를 자동 관리

캐시 초기화:

ImageCache.default.clearMemoryCache()
ImageCache.default.clearDiskCache()

5. 이미지 처리 (리사이즈, 원형 등)

let processor = RoundCornerImageProcessor(cornerRadius: 20)
imageView.kf.setImage(
    with: url,
    options: [.processor(processor)]
)

6. 장점

  • 코드 간결
  • 이미지 다운로드 + 캐싱 자동 관리
  • 다양한 이미지 처리 지원
  • 비동기 처리로 UI 성능 향상

7. 주의사항

  • 너무 많은 고화질 이미지를 캐싱하면 메모리 압박 발생 가능
  • 네트워크 이미지 사용 시 HTTPS 권장
  • 캐시 정책을 적절히 설정하여 성능 최적화 필요

결론

Kingfisher는 iOS에서 네트워크 이미지 처리와 캐싱을 단순화하는 강력한 라이브러리입니다.
네트워크 기반 UI 개발에서 필수적으로 고려할 만한 도구입니다.

profile
iOS Dev

0개의 댓글