1

我最近一直在为应用程序添加对旋转的支持,这很痛苦。我发现一直很烦人的一件事是,每次我在横向和纵向模式之间旋转时,我的一个视图都会向上移动大约 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 坐标原点设置为负数(这没有任何意义!),否则我的视图似乎太向上滑动了。

发生了什么?

4

1 回答 1

0

在我的应用程序中,当我进入横向模式时,我会隐藏标签栏和导航栏。使条隐藏的语句被写入纵向视图的视图控制器的代码中。

当我从横向模式转换回纵向模式时,横向视图控制器被弹出并且我得到奇怪的移动视图。原来这是由标签/导航栏取消隐藏语句的顺序引起的。

我的标签/导航栏取消隐藏语句位于纵向视图控制器中,因此调用它们为时已晚。将选项卡/导航取消隐藏语句移动到横向视图控制器(而不是纵向视图控制器)中的旋转代码后,我的问题就消失了。

于 2012-10-17T17:26:25.447 回答