我有两个 UITableViewControllers 嵌入在单个视图控制器内的单独全屏容器视图中,并带有一个分段控制栏按钮项来在它们之间切换(如在 App Store 的顶部图表中)。由于视图控制器中有两个滚动视图,我必须手动管理它们的插图(如类参考中所述)。在 iOS 7 中自动旋转的正确方法是什么?
这就是我现在在我的 UITableViewController 子类实现中所拥有的:
- (void)viewWillAppear:(BOOL)animated
{
portraitEdgeInsets = UIEdgeInsetsMake(64.0, 0.0, 44.0, 0.0);
landscapeEdgeInsets = UIEdgeInsetsMake(52.0, 0.0, 32.0, 0.0);
[_fileTable setScrollIndicatorInsets:portraitEdgeInsets];
[_fileTable setContentInset:portraitEdgeInsets];
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
if (toInterfaceOrientation == UIDeviceOrientationPortrait) {
[_fileTable setScrollIndicatorInsets:portraitEdgeInsets];
[_fileTable setContentInset:portraitEdgeInsets];
}
else {
[_fileTable setScrollIndicatorInsets:landscapeEdgeInsets];
[_fileTable setContentInset:landscapeEdgeInsets];
}
}
它几乎可以工作,但是如果表格视图在旋转到纵向之前在横向模式下一直滚动到顶部,由于之前的插图,它将向下滚动 12 个像素(插图是正确的;表格视图不是一直滚动到顶部)。我注意到对于自动插入的表格视图,相反的情况会发生:如果它们在横向中一直滚动到底部,当返回纵向时,它们将从底部向上滚动 12 个像素。那不是问题。我只是想让两个表视图都表现得像自动插入的视图。