【问题标题】:Refreshing UITableViewCell layout from its imageView after fetching image获取图像后从其 imageView 刷新 UITableViewCell 布局
【发布时间】:2016-06-20 15:57:23
【问题描述】:

我有 UIImageView 扩展程序,它正在后台从给定 url 下载图像。我用它来获取UITableViewCell 的图像。成功下载后,我调用self.setNeedsLayout(),但它不会刷新单元格的布局,因为此方法仅更新调用者子视图的布局。我试图使用self.superview.setNeedsLayout() 甚至self.window.setNeedsLayout()。它不起作用,它说这两种观点都是零。你有什么想法我可以从它的childView中刷新UITableViewCell布局吗?我们正在谈论通用UITableViewCell,我想避免创建新类只是为了在这种情况下进行布局,我想在我只有UIImageView 而不是在表格视图中的其他地方使用这个扩展。可以通过简单的扩展来实现吗?现在我有自定义 UITableViewCell 正在下载,设置图像,然后它正在调用 self.setNeedsLayout() 并且它可以工作。

【问题讨论】:

    标签: ios swift uitableview uiimageview swift-extensions


    【解决方案1】:

    请考虑使用 SDWebImage 等库来异步下载图像。我认为它可以解决您的问题并提高性能。

    编辑:

    来自SDWebImage 文档:

    它提供:

    • 添加网页图像和缓存的 UIImageView 类别
    • 异步图片下载器
    • 具有自动缓存过期处理功能的异步内存 + 磁盘映像缓存
    • 保证不会多次下载同一个 URL
    • 保证不会一次又一次地重试虚假网址
    • 保证主线程永远不会被阻塞
    • 表演!
    • ...

    【讨论】:

    • 我会尝试这样做。我只是想自己编码一切:)
    • 我明白,我曾经这样做,但我最终使用了这个库,因为它为您提供了许多很酷的功能,例如图像缓存。只需一行,您就可以异步下载图像,您不必再考虑它了。我已经用它替换了我所有的图片下载,我的应用程序在效率上提高了很多:)
    • 嗨,我已经阅读了这个库。看起来不错,但我仍然想知道如何使我的扩展工作。只是想知道如何从它的子视图强制重新布局单元格。
    • 我不太明白,你想要childview.superview.setNeedsLayout 之类的东西吗?
    • 是的。它不工作。在细胞的情况下。它没有重新布局
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    相关资源
    最近更新 更多