【发布时间】:2013-12-10 23:42:56
【问题描述】:
在 iOS 7 中,我使用以下代码滚动到 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
];
【问题讨论】:
-
@DuncanGroenewald
[tableView scrollRectToVisible:CGRectMake(0.0, 0.0, 1.0, 1.0) animated:YES]一次只能向上滚动一屏。我必须多次调用它才能滚动到第一个单元格。也许这只是我的代码情况......我不知道......
标签: ios cocoa-touch uitableview ios7