在这里阅读了IOS 6中处理屏幕旋转的所有方法,Apple文档和激烈的Google搜索,经过几天和几天后,我仍然坚持使用xibs。
我想要实现的是只有几个iPad只有xibs,仅在风景中,应用程序的其余部分是肖像。
如果我正在使用故事板,我理解如何子类化导航控制器以覆盖旋转,但我不是,我使用xibs并且会感谢任何输入如何使用xibs
在我的app delegate中:
ICHomeController *homeController = [[ICHomeController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:homeController];
navController.navigationBarHidden = YES;
navController.navigationBar.barStyle = UIBarStyleBlackOpaque;
navController.navigationBar.tintColor = [UIColor grayColor];
self.navigationController = navController;
[self.window setRootViewController:self.navigationController];
[self.window makeKeyAndVisible];
return YES;
除了尝试看起来像这里的每个解决方案之外,我已经在我的vew控制器中尝试了显而易见的东西,但正如我在iOS 6中所理解的那样它不会被调用。
// Older versions of iOS (deprecated)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationLandscapeLeft;
}
答案 0 :(得分:3)
我一直在与这种情况进行斗争,导航结构更为复杂。
基本规则似乎是ROOT控制器,无论是UINavigationController,UITabBarController还是简单的UIViewController,都可以控制旋转。因此当您将UIViewControllers推入堆栈时,第一个仍然控制旋转。
如果使用模态视图,则此模型视图将被视为堆栈的ROOT,直到它被解除为止。因此,如果您显示模态UIViewController然后在其上方推送视图,则呈现为模态视图的UIViewController控制旋转。 只需确保模态视图使用presentViewController:animated:completion。
使某些视图处于不同轮换的最简单方法是以模态方式呈现。 如果无法避免,请立即返回第一个视图或唠叨控制器并设置旋转。
在旋转方法中添加一些NSLog(@"%s", __FUNCTION__);
语句,以查看正在调用的语句。
在上面的代码中,只有第一种方法是旧的iOS5(现已弃用)方法。其他3个是新的iOS 6方法。
使用上面的示例代码,您需要继承UINavigationController。为此,请创建一个新类作为具有不同名称的UINavigationController子类,例如。 MyNavigationController并向其添加旋转方法。然后在你的代码上面而不是使用
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:homeController];
你会使用:
MyNavigationController *navController = [[MyNavigationController alloc] initWithRootViewController:homeController];
另外,请确保您在此处选择了方向:
答案 1 :(得分:0)
我遇到了同样的问题。这是5和6中对我有用的东西。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
- (BOOL)shouldAutorotate NS_AVAILABLE_IOS(6_0)
{
return NO;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation NS_AVAILABLE_IOS(6_0) {
return UIInterfaceOrientationLandscapeLeft;
}
就目标摘要而言,只支持肖像模式。