1

此代码位于设置自定义单元格元素的单元格初始化例程中。它从网络异步获取图像。但是一旦完成,我需要它重新绘制。

这是我的代码片段:

dispatch_async(myCustomQueue, ^{

    //Look for the image in a repository, if it's not there
    //load the image from the web (a slow process) and return it
    mCover.image = [helperMethods imageManagerRequest:URL];

    //Set the image to be redrawn in the next draw cycle
    dispatch_async(dispatch_get_main_queue(), ^{
        [mCover setNeedsDisplay];
    });

});

但它不会重绘 UIImageView。我也尝试重新绘制整个单元格,但这也不起作用。非常感谢您的帮助。我一直在努力解决这个问题一段时间!

4

1 回答 1

3

而不是setNeedsDisplay,您应该像 Apple 在其文档中提到的那样在主线程上设置图像。

注意:在大多数情况下,UIKit 类只能在应用程序的主线程中使用。对于从 UIResponder 派生的类或涉及以任何方式操作应用程序的用户界面的类尤其如此。

这应该可以解决您的问题:

dispatch_async(myCustomQueue, ^{

    //Look for the image in a repository, if it's not there
    //load the image from the web (a slow process) and return it
    UIImage *image = [helperMethods imageManagerRequest:URL];

    //Set the image to be redrawn in the next draw cycle
    dispatch_async(dispatch_get_main_queue(), ^{
        mCover.image = image;
    });

});
于 2013-02-04T03:27:14.873 回答