我尝试构建一个talbleview,其中每行可以显示一个子列表,当它被点击时。为了更新数据模型并致电UITableView with self-sizing insertRowsAtIndexPaths changes contentOffset
[self.tableView insertRowsAtIndexPaths:addedIndexPaths withRowAnimation:(UITableViewRowAnimationTop)];
动画发生在行可见时。 添加的单元格在动画后正确显示,但动画tableview有时会向上滚动。特别是在桌面视图的最后一部分发生这种情况。此外,tableview始终在表格中向上滚动,直到插入单元格上方的单元格顶部可见。
我想在可见动画期间修复contentoffset。 我试图设置begin updates
和end updates
中的上下文偏移量,但这不起作用,因为动画会向上滚动,您会看到内容滚动回原位。
我使用自动布局来使单元格自动调整大小。
如何在插入可见单元格时保持tableview的内容偏移量不变?
你问表视图当您指定UITableViewRowAnimationTop滚动到添加单元格的顶部。如果你不希望发生这种情况,你需要选择一个新的行动画。你可能想要UITableViewRowAnimationNone。所有的选项都记录在这里https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/#//apple_ref/c/tdef/UITableViewRowAnimation。 – Dare
我不太确定,但是:可能是因为您使用的是autoLayout,但您不会在每次动画后自动调整autoLayout以进行自我调整。如果这是您做错的地方,请参阅此视频。希望能帮助到你。 https://www.youtube.com/watch?v=N5Ert6LTruY – Honey
@ asma22我确实使用自动布局来调整我的单元格大小。我尝试并称为self.tableview layoutIfNeeded内部的开始/结束更新块,但它并没有解决问题。你会如何去通知自动布局? – HasenBaumeister