Отображение большого UIImage вызывает дрожание, даже если оно уже находится в памяти - PullRequest
1 голос
/ 10 февраля 2012

У меня есть приложение, похожее на пример приложения PhotoScroller, например много больших изображений (2048x1536) в scrollview. Я не использую тайл-подход, так как мне не нравится этот эффект частичной загрузки. Я хотел бы показать все изображение сразу. Я загружаю изображения в фоновом потоке. Когда я пытаюсь использовать загруженное изображение в UIImageView в первый раз, он блокирует основной поток на полсекунды, даже если он уже находится в памяти.

Я использовал профилировщик, чтобы увидеть, откуда исходит это отставание, но я не смог найти там никакой полезной информации.

iOS копирует данные изображения, когда они используются впервые, или что-то в этом роде? Можно ли это как-то сделать в фоновом потоке?

РЕДАКТИРОВАТЬ: когда я прокручиваю туда и обратно снова и использую тот же UIImage во второй раз, нет задержки

Ответы [ 2 ]

0 голосов
/ 10 февраля 2012

Я думаю, что решил это.Оказывается, когда IOS загружает UIImage с диска или из Интернета, он не загружает его в правильном формате.Поэтому, когда вы хотите отобразить его, ios должен переформатировать это изображение в формат, который он может использовать.Это переформатирование может вызвать видимое заикание, когда изображение достаточно велико.

Чтобы предотвратить это, вам нужно переформатировать UIImage после его загрузки, и вы можете сделать это безопасно в фоновом режиме (насколько я знаю). По этой ссылке показано, как это сделать.

0 голосов
/ 10 февраля 2012

Попробуйте сделать изображение в фоновом потоке тоже. Вы загружаете изображение из инета или локально? связка или пользовательский путь?

...