动态更新uiimages

时间:2010-11-22 16:39:39

标签: iphone ios4 uiimageview uiimage

任何可用于以高速率动态更新UIImageView图像的示例?这些图像是在NSThread中的IP连接上接收的。但是当我执行imageView.image = newImageRecd;

时,它们不会更新

编辑:所有数据都在主线程上重新编写

感谢任何帮助/指针。

2 个答案:

答案 0 :(得分:1)

对于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];
    });
});

我自己一直在使用它来从远程服务器加载图像,而且效果很好。

答案 1 :(得分:0)

需要在主线程上执行UI更新。如果您在其他线程上运行连接,请使用:

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

其中updateImageView:是用于设置图像视图的图像属性的方法:

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