iPhone 사용하시다 보면, 다들 이런 경험 있으시죠? ^^

iOS App Store에서 App.을 다운로드 받을때, 20 MB 이상인 녀석들은 3G 인터넷을 통해 다운로드 받을 수 없습니다. 
App Download에 제한이 걸리게 되면, App 판매량에도 분명 영향을 미칠것입니다.

자 그럼 어떻게 이 뚱뚱한 App 녀석을 다이어트 시켜야 할까요?

최근에 알게된 것중에 하나 인데, 소개 해보려고 합니다. 
Stretchable Image 즉, 확대 가능한 이미지를 사용함으로써, Image Size를 줄이고, 궁극적으로는 Application Size를 줄일 수 있습니다.
Android개발을 해보신 분들이라면, 9 patch Image라는 녀석을 아실텐데요, 그녀석과 흡사하지만 덜 파워풀한녀석입니다 ㅎ

 

실험 대상이 될 Image는 바로 요녀석인데요, 요녀석은 40x24 입니다. 
근데 저는 이녀석을 40x24로도 사용하고, 240x24 로도 사용하고 싶습니다.

가장 간단한 방법은 이녀석을 40x24 버전과 240x24버전을 따로 준비 하는것인데, 이러면서 App.이 뚱뚱해지기 시작합니다. 

그럼 어떻게 해야 하냐 ? 범인, 아니 정답은 여기 있습니다 !

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight;


이녀석을 이용하면, 일단 UIImage를 Stretchable하게 바꿔줍니다. 


위의 스킨 샷을 보시면, Stretchable한 Image를 이용하지 않고 그냥 UIImageView의 크기만 늘리게 되면, 
두번째 나오는 녀석처럼 쭈욱 늘어나서, 못생긴 녀석이 됩니다. 
그러나 UIImage를 Stretchable한 상태로 만들어 주면 짜잔 , 3번쨰 녀석 처럼 매끈하게 나옵니다. 


UIImage *img = [[UIImage imageNamed:@"image.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:10];

[stretchableView setImage:img];


예제 코드는 위와 같은데요, 
leftCap/topCap 값을 줄수 있어서, 값에 따라 Image를 upscale할때, 특정 픽셀들은 남기고, 아래 값들만 upscale시키게 됩니다. 

애석하게도, 위의 방법은 Interface Builder에서는 할 수 있는 방법이 없기 때문에, 
UIimageView에 Image를 세팅하는것을 소스코드 레벨에서 따로 해줘야 합니다. 

Apple이녀석들은 이런 괜찮은걸 만들어 놨으면, InterfaceBuilder에서도 쓸 수 있게 해줘야지 ;ㅂ; 
친구 녀석 말따라, Apple 애들도 IB를 잘 안써서 그런가 봅니다.


Sample Project 첨부해 드리니, 살펴 보실 분들은 한번씩 살펴 보시기 바랍니다. 

어떻게, 당신의 App은 다이어트에 성공하셨나요? ^^



+ Recent posts