在iOS 7中,我使用以下代码来滚动到我的UITableView顶部。您需要考虑半透明状态栏和导航栏的重叠。请参见UITableView。
[tableView
setContentOffset:CGPointMake(
0.0,
-tableViewController.topLayoutGuide.length
)
animated:YES
];
这只在第一次调用后才有效。在第一次调用时,我的表格滚动的距离比应该滚动的多得多,显示了很多空白区域。此外,UIRefreshControl 看起来会卡住。你需要轻微地触碰表格,使它反弹到真正的顶部。之后,无论你调用多少次,它都会像你预期的那样运行。
我尝试过其他方法,但它们都存在问题。iOS 6 的方法在第一次调用时也会表现得非常奇怪。虽然在后续调用中它不会突然跳跃很多,但由于我们忘记考虑状态栏和导航栏,所以它们并不正确,因为它会将表格滚动到距离顶部 64.0 点的位置。
[table setContentOffset:CGPointZero animated:YES];
我还尝试了滚动到第一个单元格,但它不能一次性滚动到顶部。每次调用它时,它只会向上滚动一页的内容。
[tableView
scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]
atScrollPosition:UITableViewScrollPositionTop
animated:YES
];
[tableView scrollRectToVisible:CGRectMake(0.0, 0.0, 1.0, 1.0) animated:YES]
只能每次滚动一屏。我必须多次调用它才能滚动到第一个单元格。也许这只是我的代码问题...我不知道... - Pwner