我有些奇怪的问题。我已经有一个带有自定义高度的UITableView设置,用于我的表格单元格。当内容在单元格的后台加载时,就会出现问题。我需要尽快加载单元格,但是每个单元格都有一个很大的图像,这可能需要花费一些时间(从网络或闪存)进行加载,因此在首次加载单元格时会在后台开始加载。这意味着该单元的高度最初是错误的,需要稍后以最小的毛刺进行更新。我遇到的问题是,它并不总是想要更新表或图像,并且可能导致一些多余的滚动。
它也非常慢。我需要做一些优化,以使其变慢一些(制作主图像的较小副本,并临时缓存单元格的高度)。
我已经尝试过各种方法。我确保表被告知要在主线程中进行更新,我尝试了一套裸露的beginUpdates / endUpdates,reloadRows / reloadSections(表处于分组模式,每节一行)。图片加载完成后,我还没有使表格正确更新。
如果有人对如何使它尽可能顺利地工作有一定见解,我将不胜感激。
最佳答案
可以去的地方是您的heightForRowAtIndex:
方法。它需要知道图像是否存在,并相应地返回一个值。每次每行完成图像加载时,您都应像这样调用reloadRows〜方法:
NSArray *indexPaths = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:x inSection:y]];
[self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
我不完全确定这是否会导致tableView上的大量滚动,但这是一个选择。
另一种选择是分块更新。说要加载的每5-10张图像(取决于您有多少张图像)都使用相同的方法重新加载它们各自的行。
关于ios - 可变大小的UITableViewCells,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13533627/