获取图像后从其 imageView 刷新 UITableViewCell 布局
Posted
技术标签:
【中文标题】获取图像后从其 imageView 刷新 UITableViewCell 布局【英文标题】:Refreshing UITableViewCell layout from its imageView after fetching image 【发布时间】:2016-06-20 15:57:23 【问题描述】:我有 UIImageView
扩展程序,它正在后台从给定 url 下载图像。我用它来获取UITableViewCell
的图像。成功下载后,我调用self.setNeedsLayout()
,但它不会刷新单元格的布局,因为此方法仅更新调用者子视图的布局。我试图使用self.superview.setNeedsLayout()
甚至self.window.setNeedsLayout()
。它不起作用,它说这两种观点都是零。你有什么想法我可以从它的childView中刷新UITableViewCell
布局吗?我们正在谈论通用UITableViewCell
,我想避免创建新类只是为了在这种情况下进行布局,我想在我只有UIImageView
而不是在表格视图中的其他地方使用这个扩展。可以通过简单的扩展来实现吗?现在我有自定义 UITableViewCell
正在下载,设置图像,然后它正在调用 self.setNeedsLayout()
并且它可以工作。
【问题讨论】:
【参考方案1】:请考虑使用 SDWebImage 等库来异步下载图像。我认为它可以解决您的问题并提高性能。
编辑:
来自SDWebImage
文档:
它提供:
添加网页图像和缓存的 UIImageView 类别 异步图片下载器 具有自动缓存过期处理功能的异步内存 + 磁盘映像缓存 保证不会多次下载同一个 URL 保证不会一次又一次地重试虚假网址 保证主线程永远不会被阻塞 表演! ...
【讨论】:
我会尝试这样做。我只是想自己编码一切:) 我明白,我曾经这样做,但我最终使用了这个库,因为它为您提供了许多很酷的功能,例如图像缓存。只需一行,您就可以异步下载图像,您不必再考虑它了。我已经用它替换了我所有的图片下载,我的应用程序在效率上提高了很多:) 嗨,我已经阅读了这个库。看起来不错,但我仍然想知道如何使我的扩展工作。只是想知道如何从它的子视图强制重新布局单元格。 我不太明白,你想要childview.superview.setNeedsLayout
之类的东西吗?
是的。它不工作。在细胞的情况下。它没有重新布局以上是关于获取图像后从其 imageView 刷新 UITableViewCell 布局的主要内容,如果未能解决你的问题,请参考以下文章