我在我的应用中有一些观点,我不想支持方向。
在didFinishLaunchingWithOptions
我添加导航:
...
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:self.viewController];
self.window.rootViewController = nav;
[self.window makeKeyAndVisible];
...
每个ViewController
我都有UITabBar
(我不知道这是否重要)。
在第一个视图控制器中,我添加:
-(BOOL)shouldAutorotate {
return NO;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
在视图加载时调用 supportedInterfaceOrientations
,但shouldAutorotate
在我旋转设备时没有调用
我在这里缺少什么?
答案 0 :(得分:15)
这是因为UITabBarcontroller
和UINavigationController
都没有将shouldAutorotate传递给它的可见视图控制器。要解决这个问题,你可以继承UITabBarController或UINavigationController并从那里转发shouldAutorotate:
在您的子类UITabBarController中添加:
- (BOOL)shouldAutorotate
{
return [self.selectedViewController shouldAutorotate];
}
在您的子类UINavigationController中添加:
- (BOOL)shouldAutorotate
{
return [self.visibleViewController shouldAutorotate];
}
答案 1 :(得分:0)
AppDelegate
中的:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window // iOS 6
{
return UIInterfaceOrientationMaskAll;
}
在ViewController中:
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}