【发布时间】:2016-05-05 16:00:03
【问题描述】:
我尝试构建一个 talbleview,其中每一行都可以在点击时显示一个子列表。为此,我更新了 Datamodel 并调用了
[self.tableView insertRowsAtIndexPaths:addedIndexPaths withRowAnimation:(UITableViewRowAnimationTop)];
动画在行可见时发生。 添加的单元格在动画后正确显示,但在设置动画时,tableview 有时会向上滚动。这尤其发生在表格视图的最后一部分。此外,表格视图总是向上滚动,直到插入单元格上方的单元格顶部可见。
我想在可见动画期间修复 contentoffset。
我尝试在begin updates 和end updates 内设置上下文偏移量,但这不起作用,因为动画会向上滚动,您会看到内容滚动回原位。
我使用自动布局来使单元格自动调整大小。
如何在插入可见单元格时保持tableview的内容偏移不变?
【问题讨论】:
-
当您指定 UITableViewRowAnimationTop 时,您要求表格视图滚动到添加单元格的顶部。如果您不希望这种情况发生,您需要选择一个新的行动画。你可能想要 UITableViewRowAnimationNone。您的所有选项都记录在此处developer.apple.com/library/ios/documentation/UIKit/Reference/…。
-
我不太确定,但是:可能是您正在使用 autoLayout,但您没有向 autoLayout 发送消息以在每个动画后自行调整。如果这是您做错的,请查看此视频。希望能帮助到你。 youtube.com/watch?v=N5Ert6LTruY
-
@asma22 我确实使用自动布局来调整单元格的大小。我尝试并在开始/结束更新块内调用 self.tableview layoutIfNeeded 但它没有解决问题。您将如何通知自动布局?
-
我会按照你的建议去做
-
@Dare 我已经尝试过 UITableViewRowAnimationNone。我没工作 。在某些部分它工作得很好。但尤其是在表格视图的最后一部分附近开始跳跃
标签: ios objective-c uitableview animation