我的应用程序中有两个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,情况就相反了。
为什么会这样?如何解决这个问题?我的应用程序几乎完成了。有没有简单的方法来解决这个问题,而无需对我的代码进行大的改动。
任何建议表示赞赏。非常感谢你!
答案 0 :(得分:0)
哪个视图控制器被定义为Window的rootViewController?当设备旋转AFAIK时,被操纵的视图是rootViewController.view
处的视图。
您可以检查这个,在每个视图控制器的shouldAutorotateToInterfaceOrientation
中放置一个NSLog。如果我是对的,你只会看到一个对此函数的调用。
定义哪个视图控制器应该是根,并以模态方式呈现另一个视图控制器,或者使用导航控制器。
希望它有所帮助!