UIScrollView зависает при загрузке изображений в UIImageView

У меня есть UIScrollView с включенным пейджингом. Все изображения были загружены в начале и добавлены в UIImageViews, но у меня была проблема с памятью, так как было больше изображений, поэтому я решил загрузить следующее изображение при прокрутке, если изображение еще не установлено. Если я получаю предупреждение о памяти, я удаляю все изображения, кроме текущего.

Проблема в том, что прокрутка зависает на несколько миллисекунд, если я прокручиваю.

я использую

UIImage *image = [UIImage imageNamed:@"path/to/image.png"];

для загрузки изображений. Если я использую метод imageWithContentsOfFile, это стоит намного больше времени.

Есть ли способ показать пикселизированное изображение, как в Photoapp по умолчанию, пока оно не будет полностью загружено?

Спасибо за ваши ответы заранее.


person Kevin Glier    schedule 27.04.2011    source источник


Ответы (1)


[UIImage imageNamed:]

кэширует изображения для вас, поэтому это лучше, чем imageWithContentsOfFile. Поскольку эти изображения отображаются в ячейке таблицы, по-видимому, они не должны быть такими большими. Каковы размеры изображений в файловой системе? Если вы просто поместите UIImage в UIImageView и зависите от этого для масштабирования, я предполагаю, что масштабирование происходит во время прокрутки. Можете ли вы создать эскизы для каждого изображения в файловой системе и использовать их?

person ax123man    schedule 27.04.2011
comment
Изображения отображаются в UIScrollView. Разрешение изображений составляет 960x480 (разрешение iphone 4) и уменьшено. Я подумал, что проще использовать одно изображение, за исключением добавления второго с @2x для iphone 4. Я думаю, что создание миниатюр стоило бы мне много времени. Неужели нет другого пути? - person Kevin Glier; 27.04.2011
comment
если вы зависите от UIImageView для масштабирования ваших изображений, то вы все равно эффективно создаете миниатюры в памяти. Вы же не хотите, чтобы это происходило во время прокрутки. Я бы попытался найти другое время для этого, например, запуск приложения. Что касается загрузки пиксельного изображения, я не знаю никакого волшебного способа сделать это. Создайте версию изображения с низким разрешением и сначала загрузите ее, а затем добавьте изображение с высоким разрешением. Версия с низким разрешением может быть просто увеличена миниатюрой. - person ax123man; 02.05.2011