UIScrollView анимация запаздывает - PullRequest
1 голос
/ 21 июля 2010

Я пишу ридер для iPad, который показывает изображения (максимум 1024x1322) в UIScrollView

каждое изображение загружается в фоновом потоке, когда это необходимо (во время прокрутки) (всегда максимум 3 изображения загружаются).

Моя проблема: при загрузке данных я обновляю UIImageView, в фоновом потоке вот так:

image= [[UIImage alloc] initWithContentsOfFile: file];
[content setImage:image]

Кажется, что он "блокирует" основной поток и делает анимацию UISCrollView совсем не плавной.

Заранее спасибо за любую подсказку

Ответы [ 2 ]

2 голосов
/ 26 июля 2011

Вы должны никогда установить изображение представления изображения (или любое свойство любого компонента пользовательского интерфейса) из фонового потока.UIKit является не потокобезопасным.Вам нужно передать изображение в основной поток, используя либо GCD, либо performSelectorOnMainThread:withObject:waitUntilDone:.

0 голосов
/ 26 июля 2011

сделайте что-то подобное в фоновом потоке вместо использования UIImage

CGDataProviderRef dataProvider = CGDataProviderCreateWithFilename("file.png"); 
CGImageRef image = CGImageCreateWithPNGDataProvider(dataProvider, NULL, NO, kCGRenderingIntentDefault);

верните ссылку на изображение в ваш основной поток, затем создайте UIImage с помощью [UIImage imageWithCGImage: image]

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...