2010-11-22 58 views
0

任何可以动态更新UIImageView图像的例子?这些图像在NSThread中的IP连接上接收。但他们不更新时,我imageView.image = newImageRecd;动态更新uiimages

编辑:所有的数据是RECD在主线程

感谢所有帮助/指针。

回答

0

UI更新需要在主线程上执行。如果你正在运行在不同的线程上的连接,可以使用:

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

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

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

不行不行。所有数据都在主线程上记录。 – 2010-11-22 17:20:50

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

我一直在使用这个自己从远程服务器加载图像,它的工作大。