我使用UINavigationController
在我的应用中展示内容。我将控制器保存在单独的字典中,并且在用户交互时,我使用正确的UIViewContoller
加载导航控制器。每个视图控制器都实现
- (BOOL)shouldAutoRotate;
和
- (NSUInteger)supportedInterfaceOrientations;
但是当我尝试将视图控制器设置为我的导航控制器时:
[self setViewControllers:[NSArray arrayWithObject:controller] animated:NO];
应用程序不会根据控制器支持的方向旋转
例如,手机处于横向,我的视图控制器仅支持纵向。 如何让设备旋转为纵向?
代码: 我的导航控制器子类
- (BOOL)shouldAutorotate{
return [[self topViewController] shouldAutorotate];
}
- (NSUInteger)supportedInterfaceOrientations{
return [[self topViewController] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentatio{
return [[self topViewController] preferredInterfaceOrientationForPresentation];
}
我的控制器:
- (BOOL)shouldAutorotate{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
return UIInterfaceOrientationMaskPortrait;
}
return UIInterfaceOrientationMaskAll;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationPortrait;
}
该文档指出,为了致电supportedInterfaceOrientations
,shouldAutorotate
必须返回YES。
任何想法??