在 UITableView 内的 UIImageView 中从 Web 加载图像

Posted

技术标签:

【中文标题】在 UITableView 内的 UIImageView 中从 Web 加载图像【英文标题】:load images from web in UIImageView inside UITableView 【发布时间】:2011-03-06 00:02:32 【问题描述】:

如何将我网站上的图片加载到 UITableView 中?性能的最佳方式是什么?当表格单元格被重复使用时,如何处理重新渲染图像?

如何在 didSelect..Row 方法中将图像从 tableView 传递到单元格?

【问题讨论】:

【参考方案1】:

提高性能的最佳方式是延迟加载。您不应该下载用户未查看的图像。以下链接提供了示例代码

Lazy TableImages

乍一看可能有点复杂,但实际上并非如此。如果您不确定如何修改此代码的 tableview,请根据需要修改此代码的 rootview 控制器。 例如:从 nib 加载自定义单元格

PS:你必须通过xml中的图像链接才能使用此代码

【讨论】:

【参考方案2】:

将所有图像的像素数加在一起(理想情况下,您可以在您的网站上制作尺寸完美的小图像?),然后乘以 4。这就是您要处理的字节数。为您的用户着想,请保持低调!

同步下载 NSOperations 中的图片(虽然苹果文档有更复杂的解决方案),到 NSMutableDictionary 中,key 是 url,png 或 jpeg 数据(或实际的 UIImage)作为值。您需要在对缓存字典的所有访问中使用 @synchronize(),因为您将从多个线程访问数组。

当您收到内存警告时,只需告诉字典删除所有项目。 (在同步块内)

-(void)somememorywarning;

    @synchronized(gImageCacheDict)
    
        [gImageCacheDict removeAllObjects];
    
 

我将表格单元格的内容留给文档等,但你不这样做 didSelect 调用..

【讨论】:

您在 tableview 单元格需要图像时立即开始下载,并使用占位符直到真实的东西到达。每次图片下载成功后,你可以在主线程发布通知,告诉你的table view重新加载数据。 如何下载图片? WebView 会更好吗?我什至不知道从哪里开始下载图像?感谢您迄今为止的建议。 你可以使用 NSData *imageData = [NSData dataWithContentsOfURL: [NSURL URLWithString:@" h ttp;//yoursite.png"]]; 我想这需要你一段时间来学习。耐心点。采取小步骤。花一个小时寻找尽可能靠近您的桌子的示例代码。你可以用 [UIImage imageWithData:imageData]; 创建一个 UIImage

以上是关于在 UITableView 内的 UIImageView 中从 Web 加载图像的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 内的 UITableView

UIViewController 内的 UITableView? [关闭]

如何使表格滚动工作:UIControl 内的 UITableView 内的 UIControl

更新 UITableView 内的 UIView 帧大小 - swift

带有日期的 UIScrollView 内的 UITableView

uiCollectionViewCell 内的 Uitableview