У меня есть приложение, частью которого является отображение сетки изображений.Каждый ImageView имеет размер 200x150, но сами изображения имеют размер 1024x768.Если я попытаюсь просто установить эти изображения, я скоро получу предупреждения о памяти и, возможно, даже погибну.
С другой стороны, если изменение размера этих изображений в коде очень затратно для процессора и займет много времени.
Теперь я посмотрел одно из видео сеанса «Apple WWDC», и тот парень упомянул contentScaleFactor из UIView, который отвечает за объем фактической растровой памяти, выделенной для отображения представления.
В документации упоминаются только случаи, когда коэффициент масштабирования больше единицы, но мне важно установить его значение меньше единицы:
// Make sure not to divide by zero
if (image.size.width > 0 && image.size.height > 0)
{
CGFloat widthRatio = self.imageView.frame.size.width / image.size.width;
CGFloat heightRatio = self.imageView.frame.size.height / image.size.height;
CGFloat aspectFitRatio = MAX(widthRatio, heightRatio);
aspectFitRatio = MIN(1, aspectFitRatio);
[self.imageView setContentScaleFactor:aspectFitRatio];
}
Таким образом, мой imageView выделит гораздо меньше памяти.
Мой вопрос - я прав?это действительно спасет память?Это даже "законно", чтобы установить для contentScaleFactor значения <1? </p>
Спасибо!