iOS11 UITableview重新加载行显示路径故障

iOS11 UITableview重新加载行显示路径故障,ios,uitableview,autolayout,ios11,Ios,Uitableview,Autolayout,Ios11,谁能帮助我理解或解决iOS11中的UITableView故障。我已经设法在一个相当简单的测试用例中重现了我的问题 当重新加载靠近tableview底部的单元格时,重新加载的单元格将开始奇怪地滚动,其他单元格开始移动和跳跃 当重新加载多个单元格时,情况会变得更糟,但我不想使这个简单的示例复杂化 编辑:此问题仅在iOS11中出现,在iOS10和iOS12中可以正常工作。所以 您需要下载iOS11模拟器,以便在Xcode 10中进行测试 如果我这样使用,它会起作用 - (CGFloat)table

谁能帮助我理解或解决iOS11中的UITableView故障。我已经设法在一个相当简单的测试用例中重现了我的问题

当重新加载靠近tableview底部的单元格时,重新加载的单元格将开始奇怪地滚动,其他单元格开始移动和跳跃

当重新加载多个单元格时,情况会变得更糟,但我不想使这个简单的示例复杂化

  • 编辑:此问题仅在iOS11中出现,在iOS10和iOS12中可以正常工作。所以 您需要下载iOS11模拟器,以便在Xcode 10中进行测试

如果我这样使用,它会起作用

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 100;
}
这将有助于:

[UIView performWithoutAnimation:^{
    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}];

尝试为viewDidLoad上的表视图提供从0到0的估计数据。它对我有用

请尝试设置您的表视图估计值(在viewDidLoad方法中):
self.tableView.estimatedRowHeight=100

默认情况下,tableView.rowHeight设置为UITableViewAutomaticDimension,但您需要设置EstimateDrowEight 从apple-“要启用自调整表视图单元格大小,必须将表视图的rowHeight属性设置为UITableViewAutomaticDimension。还必须为estimatedRowHeight属性指定一个值。一旦设置了这两个属性,系统将使用自动布局来计算行的实际高度。”

您可以查看:

请编辑您的问题,以包含演示问题的最小相关代码。最小相关代码链接到Github是的,我知道。但是,您至少应该在问题中以实际文本的形式显示表视图代码的相关部分。没有任何相关部分的代码可显示,整个测试用例都需要演示该问题。请检查是否有帮助,只要单元格高度不超过100,如果有,则故障再次出现。更改为
stringByPaddingToLength:100
,您将看到问题再次出现。在iOS 11中,默认表行高度为“自动”因此,您需要实现estimatedHeightForRow或heightForRow,并且必须返回一个合理的值,或者需要显式设置tableviews row height属性以禁用自动行高,因此我有完全动态的内容,可以是从1行到20行的任意值,那么什么是合理的价值呢?如果可能的话,你应该计算实际价值。如果您还不知道,则返回一个默认值,一旦您知道单元格的实际高度(例如cellForRow),就可以将该高度存储在该行的数组中,并在下次调用方法的估计高度和高度时返回该值,该方法只会禁用自调整表单元格大小。所有单元格都成为一行。结合Bess的回答,如果您设置了表格视图单元格的静态高度,这将非常有用。这将禁用表格单元格的自调整大小。所有单元格都变成一行。@trapper我添加了self.tableView.estimatedRowHeight=100;添加到项目viewController的viewDidLoad,它似乎可以解决您的问题。默认情况下,您的tableView.rowHeight设置为UITableViewAutomaticDimension,但您需要设置来自apple的估计高度:要启用自调整表格视图单元格大小,必须将表格视图的rowHeight属性设置为UITableViewAutomaticDimension。还必须为EstimateDrowEight属性指定一个值。一旦设置了这两个属性,系统将使用“自动布局”计算行的实际高度。“在我的评论之后,你编辑了你的答案并完全改变了它。lol@trapper是的:)对不起。。但这个新答案对你有用吗?@trapper做到了?;)不幸的是,我仍然在这里遇到小故障——它确实发生得很快,很难注意到。删除动画重新加载是一个相当折衷的办法。