2010-08-13 6 views
0

저는 UIImageViews로 구성된 사용자 정의보기가 있습니다. 이 UIImageView는 크기가 다양합니다 (200x200에서 50x50까지). 표시되는 이미지 (png 파일에서로드 됨)는 가능한 가장 높은 해상도 (200x200)로 자원에 저장되지만 더 낮은 해상도로 자주 표시됩니다. iPhone에서 UIImageView로 이미지 크기 조절

은 현재 난 그냥 따라서, 전체 해상도 이미지와 UIImageViews를로드

UIImage* anImage = [UIImage imageWithContentsOfFile:imagePathAndName]; // anImage is 200x200 
aView = [[UIImageView alloc] initWithImage:anImage]; 
aView.frame = myFrame; // myFrame is 50x50 

첫 번째 질문,있는 UIImageView가에서 이미지를 축소 어떠한 성능 저하 (메모리 나 CPU 시간) 단지셔서 할 말있다 200x200 ~ 50x50? 내 앱이 메모리를 많이 사용하거나 느려지는 것 같지는 않지만 속도를 높이거나 메모리 사용량을 줄이면 성공할 수 있습니다.

프로그래밍 방식으로 이미지의 크기를 조절하면서 놀았습니다. 이처럼 :

UIImage* anImage = [UIImage imageWithContentsOfFile:imagePathAndName]; // Image is UIGraphicsBeginImageContext(scaledSize); // scaledSize is 50x50 
CGRect scaledRect = CGRectMake(0.0, 0.0, scaledSize.width, scaledSize.height); 
[anImage drawInRect:scaledRect]; 
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); // Scaled image is now 50x50 
UIGraphicsEndImageContext(); 
aView = [[UIImageView alloc] initWithImage:scaledImage]; 
aView.frame = myFrame; // myFrame is 50x50 

프로그래밍 이미지가 먼저 부모 뷰의 경우에는 병이 내 아이폰 4를 참조에로드 할 때까지있는 UIImageView의 크기가 크기에 기반 ... 영향이없는 것 같았다 확장, 아이폰 3G 스크린의 크기이다. 안타깝게도, 아이폰 4가 3G보다 2 배의 해상도를 가지고 있음에도 불구하고, 아이폰 4에서 실행될 때이 뷰의 크기는 동일하다. 그래서 뷰의 크기에 따라 이미지 크기를 조정하면 아이폰 4보다 해상도가 낮아지고 다소 엉뚱한 것처럼 보입니다.

두 번째 질문은 프로그래밍 방식으로 이미지 크기를 줄이는 것이 도움이되는 경우입니다. iPhone 4에서 여분의 픽셀을 어떻게 활용할 수 있습니까? 분명히 나는 ​​내 견해의 크기만큼 갈 수 없다.

답변

4

조숙 한 최적화를 피하십시오.

앱이 정상적으로 실행되면 정상적으로 실행됩니다. 그렇지 않으면 최적화를 시도하십시오.

제 경험으로 볼 때 50px 이미지로 할 수있는 200px 이미지를 사용하는 것이 좋습니다. 이미지는 그래픽 하드웨어에 쉽게로드 될 수 있으며 스케일링은 하드웨어에서 수행 될 가능성이 큽니다.

성능 프로파일 링에서 알려주는 경우에만 이미지를 사전 조정합니다.

질문의 두 번째 부분 인 CoreGraphics는 망막 디스플레이에 대해 아무 것도 모르는 실제 스케일링 코드에 유의해야합니다. 그래서 CGBitmapContext에서 점을 이라면 픽셀입니다. 코드 스 니펫에서 비트 맵 컨텍스트를 만드는 라인을 생략했지만 대부분 UIGraphicsBeginImageContext(CGSize size)입니다. 살펴보고 UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale);을 대신 사용하십시오. 일반적으로 척도로서 0.0을 전달해야합니다.

UIKit Functions: UIGraphicsBeginImageContextWithOptions

+0

UIGraphicsBeginImageContextWithOptions 완벽하게 속임수를 썼는지, 감사합니다! 그리고 조기 최적화에 대한 귀하의 요점은 잘 받아 들여지고 있습니다. – zpasternack

관련 문제