У меня есть пользовательский вид, который состоит из нескольких UIImageViews. Эти UIImageView могут различаться по размеру (от 200x200 до 50x50). Изображения, которые они отображают (загруженные из png-файлов), хранятся в ресурсах с максимально возможным разрешением (200x200), но часто отображаются при более низких разрешениях.Изображение масштабирования с UIImageView на iPhone
В настоящее время я просто загрузить UIImageViews с изображениями в полном разрешении, таким образом:
UIImage* anImage = [UIImage imageWithContentsOfFile:imagePathAndName]; // anImage is 200x200
aView = [[UIImageView alloc] initWithImage:anImage];
aView.frame = myFrame; // myFrame is 50x50
Первый вопрос, есть ли падение производительности (память или процессорное время), чтобы просто позволить UIImageView уменьшать изображения из скажем 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
Программное масштабирование изображение первым казалось, не было ничего дурного повлиять ... пока я не зарядил его на моем iPhone 4. Престоле, размер UIImageView на основе размера, если это родительский вид, который (выложенный в IB), является размером экрана iPhone 3G. К сожалению, размер этого представления при работе на iPhone 4 одинаковый, несмотря на то, что iPhone 4 имеет в два раза больше разрешения как 3G. Таким образом, масштабируя изображения в зависимости от размера представления, я в конечном итоге делаю их более низким разрешением, чем они должны быть на iPhone 4, и они выглядят немного дрянными.
Итак, второй вопрос заключается в том, есть ли какое-то преимущество для программного масштабирования изображений вниз. как я могу использовать дополнительные пиксели на iPhone 4? Ясно, что я не могу идти по размеру моего взгляда.
UIGraphicsBeginImageContextWithOptions сделал трюк отлично, спасибо! И ваша точка зрения на преждевременную оптимизацию хорошо взята, мне придется подумать. – zpasternack