【发布时间】:2016-03-02 17:11:58
【问题描述】:
我在UITableView 中显示一些文本和图像。图像首先被下载。由于在下载图片之前,我不知道图片的大小,所以我最初放了一个固定大小的UIImageView。下载图像后,我会调整UIImageView 的大小。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Download image
dispatch_async(dispatch_get_main_queue(), ^{
// UIImageView resizing
});
});
这一切都发生在cellForRowAtIndexPath。
我在这里面临的问题是:
1.如何更新单元格的高度?考虑到单个单元格中可以有许多图像。所以我需要在上面下载时更改底部图像的位置。
2. 我尝试使用UITableView beginUpdates 和endUpdates,但滚动到单元格顶部会导致用户体验不佳。
这就是 UI 在 reloadData 上的样子。有5张图片要下载:UI experience after UITableView reloadData
【问题讨论】:
-
beginUpdates和endUpdates在这种情况下实际上无效 您不应该在组内调用 reloadData 文档说。 -
@HarikrishnanT:是的。提供糟糕的 UI 体验。
-
我曾经遇到过同样的问题。问题是,如果你只重新加载一行,它正下方的单元格将隐藏在它后面,因为它的框架不会改变。然后我用 reloadData 把它卖掉了,它工作得很顺利。不确定您的用户体验问题是什么。
-
@HarikrishnanT :请查看我在链接上上传的视频。它显示了 reloadData 上的 UI 体验。
-
为什么不使用
reloadRowsAtIndexPaths:withRowAnimation:?
标签: ios uitableview uiimageview grand-central-dispatch