Self Sizing Cells使UITableView跳跃
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Self Sizing Cells使UITableView跳跃相关的知识,希望对你有一定的参考价值。
我有一个UITableView,每个单元格都有一个图像和两个标签,正如你在第一张图片上看到的那样
所以我尝试使用自我调整细胞,一切都很好,除了两件事:
1)第一个和第二个单元格没有正确显示内容,但在我向下滚动然后返回它们之后一切正常。我试图在viewDidAppear中使用[tableview reloadData],但它没有帮助。首先观看不合适的标签。你可以在这个视频https://www.youtube.com/watch?v=I9DGBl1c5vg上观看
查看第一个单元格上的标签。
2)这是一个艰难的。我正在滚动表格,一切都很好,但是当我选择行时问题就出现了。它正在推动我进行详细视图,但是当我按下“返回”并返回到主视图时,tableview跳转,所以我回到不选择的行,如果我滚动表格它不会滚动平滑,但是跳跃。以下是两个视频的链接,第一个显示滚动是光滑的https://www.youtube.com/watch?v=9wAICcZwfO4,如果我不去详细视图,第二个显示跳跃问题https://www.youtube.com/watch?v=fRcQ3Za1wDM。
它绝对肯定与自我调整单元格有关,因为如果我不使用它,则不会发生这种问题。
好的,我解决了这两个问题。
问题1
我添加了这两行
[cell.contentView setNeedsLayout];
[cell.contentView layoutIfNeeded];
在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
之前的return cell
问题2
解决方案似乎非常简单。我只需要实现viewWillDissapear
并重新加载数据,所以代码看起来像这样
- (void)viewWillDisappear:(BOOL)animated;{
[super viewWillDisappear:animated];
[self.tableView reloadData];
}
对我来说解决方案很简单,如果它对某人不起作用,我在这里找到了一些有用的链接。 1)UITableView layout messing up on push segue and return. (iOS 8, Xcode beta 5, Swift) 2)http://useyourloaf.com/blog/2014/08/07/self-sizing-table-view-cells.html
不幸的是,我相信你提出的两个问题都是ios漏洞。
问题(1)
这个blog建议一个简单的解决方案。
首次显示表视图时,您可能会发现某些单元格的大小不正确。但是当您滚动表格视图时,新单元格将以正确的行高显示。要解决此问题,可以在视图出现后强制重新加载:
只需将以下内容添加到viewDidAppear
方法中即可。我测试过它并且效果很好。
[self.tableView reloadData];
问题2)
第二个问题与以下问题重复:
IOS 8 UITableView self-sizing cells jump/shift visually when a new view controller is pushed
问题的作者自己提出了一种解决方法,这似乎没问题。但是,我还没有试过这个。
好吧,我通过在sizeThatFits中缓存我的单元格高度来解决它,并在委托中为估计的单元格高度返回该值。工作得很漂亮。
请随意针对其他提议的解决方案提出问题。
以上是关于Self Sizing Cells使UITableView跳跃的主要内容,如果未能解决你的问题,请参考以下文章
iOS:通过Self-Sizing Cells新特性自动计算cell的高度
[React] Create a Virtualized List with Auto Sizing Cells using react-virtualized and CellMeasurer(代码
Self Sizing CollectionView 在 Self Sizing TableViewCell 内
将 UITable 中 UITableViewCell 中子视图中对象的 CGRect 转换为相对于 self.view 的 CGRect