динамическое обновление uiimages - PullRequest
0 голосов
/ 22 ноября 2010

Есть ли примеры, которые динамически обновляют изображения UIImageView?Эти изображения принимаются по IP-соединению в NSThread.Но они не обновляются, когда я делаю imageView.image = newImageRecd;

РЕДАКТИРОВАТЬ: Все данные записываются в основной поток

Оценить любую помощь / указатели.

Ответы [ 2 ]

1 голос
/ 24 апреля 2012

Для iOS 4 и более поздних версий вы можете использовать Grand Central Dispatch (GCD) для загрузки изображений в фоновом потоке. Вот ссылка, которая полностью объясняет этот процесс:

http://blog.slaunchaman.com/2011/02/28/cocoa-touch-tutorial-using-grand-central-dispatch-for-asynchronous-table-view-cells/

В приведенном выше учебнике представлен этот код:

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

dispatch_async(queue, ^{
    UIImage *image = [UIImage imageWithContentsOfFile:imagePath];

    dispatch_sync(dispatch_get_main_queue(), ^{
        [[cell imageView] setImage:image];
        [cell setNeedsLayout];
    });
});

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

0 голосов
/ 22 ноября 2010

Обновления пользовательского интерфейса должны выполняться в главном потоке. Если вы используете соединение в другом потоке, используйте:

[self performSelectorOnMainThread:@selector(updateImageView:) withObject:newImageRecd waitUntilDone:FALSE];

где updateImageView: - метод, используемый для установки свойства изображения представления изображения:

-(void)updateImageView:(UIImage *)image
{
    [self.imageView setImage:image];
}
...