티스토리 뷰

Swift 3.0 & Xcode 8.3 기준으로 작성되었습니다.


사이즈가 큰 이미지를 테이블 뷰에서 불러와 보여주는 부분에서 상당한 로딩이 걸린 적이 있었습니다.

따라서 이러한 이미지들을 캐싱하는 것으로 적절한 조치를 취해주려고 했습니다.

물론 해당 이미지가 보이지 않을 때와 캐싱해서 받아올 때를 나눠서 처리하려고 하다보니 독학으로 한 저에게는 조금 큰 무리가 있다는 것이었죠.


결국 코코아팟 라이브러리를 찾아보던 중 다음과 같은 라이브러리를 찾게 되었습니다.



1. SDWebImage


이미지를 클릭하면 새창으로 열립니다.



이 라이브러리의 특징은 다음과 같습니다.


Features

  •  Categories for UIImageViewUIButtonMKAnnotationView adding web image and cache management
  •  An asynchronous image downloader
  •  An asynchronous memory + disk image caching with automatic cache expiration handling
  •  A background image decompression
  •  A guarantee that the same URL won't be downloaded several times
  •  A guarantee that bogus URLs won't be retried again and again
  •  A guarantee that main thread will never be blocked
  •  Performances!
  •  Use GCD and ARC



어싱크 기능이 있어서 상당히 좋습니다. 물론 캐싱 핸들러도 괜찮죠!

데이터를 받아오는 부분에서 이미지 주소값을 넣어서 받아옵니다. 이때 palceholderImage라는 것을 이용해서 받아오기 전에

특정한 이미지를 불러오게하여 교체하는 방식으로 처리하는 느낌이 들었습니다.


import SDWebImage

imageView.sd_setImage(with: URL(string: "http://www.domain.com/path/to/image.jpg"), placeholderImage: UIImage(named: "placeholder.png"))


예제 코드를 보면 imageView에 sd_setImage를 불러와서 해당 이미지 URL을 받아오는 것을 볼 수 있습니다. 그리고 placeholder에 로컬 이미지 에셋을 넣어둠으로써 이미지를 받아오는 동안에 로컬 이미지 에셋을 보여주고 바로바로 받은 이미지를 교체하는 것을 확인했습니다.



이미지 다운 받는 시간이 걸리는 부분에 적절한 라이브러리 같습니다.


저처럼 이미지가 큰 경우 또는 캐싱, 어싱크필요할 때 사용하면 좋은 라이브러리로 SDWebImage 를 추천합니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함