我需要drawRect:
在我的自定义表格单元格中实现我的自定义方法以加快表格视图滚动,但是,应用程序应该从网络下载一个图像,所以我想将图像缓存添加到我的应用程序。我的应用程序的原始实现是使用 SDWebImage 库,它实现了一个提供下载图像方法的 imageView。如果我想添加图片drawRect:
,如何实现从网络下载图片并缓存它们?
问问题
196 次
1 回答
0
您需要使用 SDWebImage 来下载和缓存图像。然后在该下载操作的委托/完成块中,您需要将图像分配给您的 a 属性并调用 setNeedsDisplay。setNeedsDisplay 将导致您的视图被重绘。这应该在 mainQueue 上调用。
[[SDWebImageManager sharedManager] downloadWithURL:[NSURL URLWithString:theArticle.imageURL] options:SDWebImageLowPriority progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished) {
dispatch_async(bakground_queue, ^{
//Here you probably want to dispatch_async to a background queue to do all the image resizing first before drawing on main queue
dispatch_async(dispatch_get_main_queue(), ^{
weakSelf.thumbnailImage = image;
[weakSelf setNeedsDisplay];
});
});
}];
在您的 drawRect 中,您需要从该属性中进行绘制。例如
[self.image drawInRect:rect]
这只是如何实现这一点的基本原则。可能需要更多的工作才能真正优化它(例如在不需要时取消下载操作)
已编辑:SDWebImageManager 有一个委托方法可以在将图像存储到磁盘缓存之前调整/转换图像的大小。您可能希望使用该方法而不是像上面那样将 dispatch_async 用于后台队列。
于 2013-11-26T06:03:56.880 回答