我最近一直在为应用程序添加对旋转的支持,这很痛苦。我发现一直很烦人的一件事是,每次我在横向和纵向模式之间旋转时,我的一个视图都会向上移动大约 50 像素左右。
我的横向模式实际上不是同一个视图控制器;当我旋转时,我推动了一个视图控制器。但是,当我向后旋转时,我必须重置肖像的 view.bounds 否则我的视图最终会向上移动。
所以在我的轮换代码中,我必须这样做:
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
UIInterfaceOrientation toOrientation = self.interfaceOrientation;
if ( self.tabBarController.view.subviews.count >= 2 )
{
if(toOrientation == UIInterfaceOrientationPortrait)
{
self.tabBarController.tabBar.hidden = NO;
self.navigationController.navigationBar.hidden = NO;
CGFloat height = [[UIScreen mainScreen] bounds].size.height;
CGFloat width = [[UIScreen mainScreen] bounds].size.width;
self.view.bounds = CGRectMake(0, -55, width, height);
}
}
}
这肯定是不对的。在我的应用程序中,有一个导航栏和标准状态栏(电池寿命、接收等)占据了我的应用程序的顶部。但是……除非我将 y 坐标原点设置为负数(这没有任何意义!),否则我的视图似乎太向上滑动了。
发生了什么?