UIView旋转问题

时间:2011-06-22 15:29:18

标签: ios uiview uiviewcontroller rotation

我的应用程序中有两个UIViewController。我在它们之间切换视图。一个是隐藏的,另一个则不是。除了方向问题,一切都很顺利。在两个UIViewController中 我重写了这个方法

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight)||
        (interfaceOrientation == UIInterfaceOrientationLandscapeLeft));
    //return YES;
} 

并在两个Xib文件中设置横向方向。

在*** Delegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions    
{
   .......
   viewController.view.hidden=TRUE;

   [self.window addSubview:viewController.view];

   [self.window addSubview:menuController.view];

   .....
}

如果我添加viewController.view,则第一个viewController.view是横向位置,它可以旋转到landscapeLeft或landscapeRight。但是menuController.view仍然是纵向位置,视图根本无法旋转。

如果我先添加menuController.view,情况就相反了。

为什么会这样?如何解决这个问题?我的应用程序几乎完成了。有没有简单的方法来解决这个问题,而无需对我的代码进行大的改动。

任何建议表示赞赏。非常感谢你!

1 个答案:

答案 0 :(得分:0)

哪个视图控制器被定义为Window的rootViewController?当设备旋转AFAIK时,被操纵的视图是rootViewController.view处的视图。

您可以检查这个,在每个视图控制器的shouldAutorotateToInterfaceOrientation中放置一个NSLog。如果我是对的,你只会看到一个对此函数的调用。

定义哪个视图控制器应该是根,并以模态方式呈现另一个视图控制器,或者使用导航控制器。

希望它有所帮助!