티스토리 뷰
https://github.com/Haneke/Haneke
1. 사용목적
- 주기적으로 비동기 처리되는 이미지를 실행 시마다 load하지 않고, 내부에 저장해서 호출하기 위해.
2. 셋팅.
- github에 있는 셈플을 다운받아서 코드 및 소스파일을 프로젝트에 복사 후 진행.
- 사용방법
1) Format 설정.
2) Import "Haneke.h"
3) UIImageView에 상황에 맞게 사용하기만 하면 끝.
3. 실제 적용 코드.
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 | + (void)initialize { HNKCacheFormat *format = [[HNKCacheFormat alloc] initWithName:@"thumbnail"]; format.compressionQuality = 0.75; // UIImageView category default: 0.75, -[HNKCacheFormat initWithName:] default: 1. format.allowUpscaling = YES; // UIImageView category default: YES, -[HNKCacheFormat initWithName:] default: NO. format.diskCapacity = 10.0 * 1024 * 1024; // UIImageView category default: 10 * 1024 * 1024 (10MB), -[HNKCacheFormat initWithName:] default: 0 (no disk cache). format.preloadPolicy = HNKPreloadPolicyLastSession; // Default: HNKPreloadPolicyNone. format.scaleMode = HNKScaleModeAspectFill; // UIImageView category default: -[UIImageView contentMode], -[HNKCacheFormat initWithName:] default: HNKScaleModeFill. format.size = CGSizeMake(200, 200); [[HNKCache sharedCache] registerFormat:format]; } | cs |
리스트에서 사용할 500x500px 이미지를 저장해본 결과
용량 및 품질에대해 최적의 셋팅은 퀄리티 0.75%에 사이즈 400x400픽셀이었다.
format.size에 200으로 적혀 있지만 실제 이미지 픽셀은 그 2배인 400px로 저장된다.
3.1 실제 ImageView적용 코드.
1 2 3 4 5 6 7 8 9 10 | UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100, 100)]; imageView.hnk_cacheFormat = format; [imageView hnk_setImageFromURL:[NSURL URLWithString:@"IMAGE URL"] placeholder:[UIImage imageNamed:@"blank.png"] success:^(UIImage *image) { [imageView setImage:image]; } failure:^(NSError *error) { //... }]; | cs |
모든 UIImageView에 hnk_setImage... 매서드를 호출할 수 있기 때문에 class만 import 한 후 바로 사용하면 된다.
imageView.hnk_cacheFormat을 적용하지 않았을 때 해당 이미지뷰 크기에 맞춰 이미지가 저장된다.
디폴트 형태로 저장되기 때문에 필히 format은 Global 변수로 할당해 사용하는게 편리하다.
4. 결과 확인.
Xcode > Window > Device 또는 Shift + Command + 2를 통해 확인 가능
단, 앱을 디바이스에서 실행한 후 컴퓨터에 연결되어 있어야한다.
Show Container를 통해 앱 내부 저장파일을 볼 수 있다.
format이 적용되지 않은 파일은 "auto-137x159-fill"폴더에 이미지가 저장되었으며,
format가 적용된 파일은 하단 thumbnail 폴더에 저장된 것을 확인 할 수 있다.
Download Container를 통해 받은 파일은 마우스 우클릭을 통해 "패키지 내용 보기"할 경우
안에 DATA를 확인할 수 있다.
5. 결론.
- 저장공간을 10MB로 셋팅한 결과 최대 10.5MB까지 적용되는 것을 확인하였으며, 사용되지 않는 이미지는 지워지고 새로운 이미지가 저장되는 것을 확인할 수 있었다.
- 서버에서 비동기 처리되는 이미지를 disk에 저장함으로써 서버 과부하 및 사용자 데이터 사용을 줄일 수 있는 점에서 효율적인 것 같다.
- 동일한 규격의 사진에 적용하기는 편리하지만 크기가 다를 경우 format을 각기 다르게 지정해야 하는 번거러움은 존재한다.
- 그래도 사용법이 편리하기에 쉽게 적용할 수 있다는 점은 가장 큰 특징이 아닌가 싶다.
'iOS > 자료정리' 카테고리의 다른 글
[iOS]sound, movie 재생 시 speak 활성/비활성화 시키기 (0) | 2016.08.16 |
---|---|
[iOS] Camera, Photos Access permission /카메라. 앨범/접근 제한/시스템 설정/ (0) | 2016.06.29 |
[iOS]NSCountedSet 사용, NSArray, NSDictionary에서 데이터 유/무 확인. (0) | 2015.12.15 |
[iOS][Mac]시뮬레이터 앱 경로 확인하기. (0) | 2015.11.12 |
[iOS]생년월일 정규식으로 유효한지 확인하기 (Regular Expression) (2) | 2015.09.15 |