2010-11-22 121 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]; 
    }); 
}); 

我一直在使用這個自己從遠程服務器加載圖像,它的工作大。