我正在开发一个iPad应用程序(不会提交到app ),它只支持景观模式。
应用程序中的大多数视图都被推到带有隐藏导航条的UINavigationController上。
当我在前面提到的UINavigationController中的顶部视图控制器中添加以下代码时,新的UINavigationController (navController)将以纵向模式创建,并显示在侧面和屏幕外。
MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
// viewController.view is landscape in MyView.xib
// myViewController is created in landscape mode
NSLog(@"%@", NSStringFromCGRect(myViewController.view.frame)); // {{0, 0}, {1024, 704}}
UINavigationController *navController = [[UINavigationController alloc]
initWithRootViewController:myViewController];
// navController is created in portrait mode (why?)
NSLog(@"%@", NSStringFromCGRect(navController.view.frame)); // {{0, 0}, {768, 1024}}
[self presentModalViewController:navController animated:YES];
// navController is shifted off-screen after it is presented modally (why?)
NSLog(@"%@", NSStringFromCGRect(navController.view.frame)); // {{1024, 0}, {748, 1024}}我找不到任何可能发生这种情况的原因,也不知道如何调整景观模式,我可以改变它的框架,但它的内容仍然是横向的。
我尝试将以下内容添加到MyViewController.m中,但没有结果:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return !UIInterfaceOrientationIsPortrait(interfaceOrientation);
}我甚至尝试将这段代码添加到一个UINavigationController子类中,这个子类也不起作用。
发布于 2010-09-23 19:14:02
通过将视图导航控制器添加为应用程序根视图的子视图,可以使视图导航控制器正确地定向。
MyRootViewController *myRootViewController = [[[UIApplication sharedApplication] delegate] myRootViewController];
[myRootViewController presentModalViewController:navController animated:YES];此代码位于导航控制器的顶部视图控制器中,导航控制器是根视图的子视图。
https://stackoverflow.com/questions/3780837
复制相似问题