Как визуализировать UIImage асинхронно?

Мне нужно нарисовать изображение асинхронно, но [UIImageView setImage:someImage] не является потокобезопасным. Поэтому я должен реализовать функцию рисования, безопасную для потоков, самостоятельно.

Возможно ли это в iOS? И как? Я знаю, как использовать Quartz для создания пользовательских рисунков.

Специальная благодарность!


person OpenThread    schedule 18.10.2012    source источник
comment
пожалуйста, посетите мой ответ асинхронного изображения stackoverflow.com/questions/12947523/   -  person Nitin Gohel    schedule 18.10.2012
comment
но SDWebImage визуализирует изображение в основном потоке   -  person OpenThread    schedule 18.10.2012
comment
Все изменения интерфейса должны выполняться в основном потоке. Выполнение изменений интерфейса в фоновом потоке не приведет к обновлению интерфейса. SDWebImage — это библиотека асинхронной загрузки и кэширования изображений, разве это не то, что вам нужно, асинхронный UIImage, как предложено в вашем заголовке?   -  person Zhang    schedule 18.10.2012


Ответы (2)


Вы можете использовать свойство drawsAsynchronously для CALayer и реализовать свой собственный imageView/imageLayer. Это может помочь улучшить отзывчивость вашего графического интерфейса.

person Jonathan Cichon    schedule 18.10.2012
comment
как сделать его совместимым с iOS5, drawsAsynchronously реализовано в iOS6 - person OpenThread; 18.10.2012
comment
Возможно, вы могли бы использовать CATiledLayer для асинхронного рисования ‹ iOS6. - person Jonathan Cichon; 18.10.2012

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

person HeikoG    schedule 18.10.2012
comment
я хочу нарисовать их в фоновом режиме, чтобы сделать их прокрутку контейнера более плавной - person OpenThread; 18.10.2012
comment
Не могли бы вы рассказать больше о контексте того, чего вы пытаетесь достичь? Я все еще думаю, что загрузка в фоновом режиме может быть тем, что вы хотите ... - person HeikoG; 19.10.2012
comment
UIImage уже загружен из локального файла и уменьшен с помощью QuartzCore в фоновом потоке. Теперь я хочу отобразить UIImage в памяти для отображения в фоновом режиме. - person OpenThread; 19.10.2012