这是视图控制器的视图控制器代码,我只想以纵向显示...
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
}
- (BOOL)shouldAutorotate {
return NO;
}
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
这就是我如何呈现它......
MyViewController *myVC = [[MyViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:myVC];
[self presentViewController:nav animated:YES completion:nil];
如果设备处于横向并且显示视图控制器,则它会正确地自动旋转到纵向。但是如果在设备显示后旋转设备,它会自动旋转到设备所处的任何方向。我想在显示设备后防止自动旋转,并且仅针对这一个视图控制器强制纵向方向。这是一款仅限iOS8的应用程序。
提前感谢您的智慧!
答案 0 :(得分:4)
问题是您要为错误的对象设置supportedInterfaceOrientations
。您已在MyViewController中实现了supportedInterfaceOrientations
。但看看你的代码:
MyViewController *myVC = [[MyViewController alloc] init];
UINavigationController *nav =
[[UINavigationController alloc] initWithRootViewController:myVC];
[self presentViewController:nav animated:YES completion:nil];
nav
是呈现的视图控制器 - 而不是MyViewController。所以nav
,UINavigationController,决定我们是否会旋转 - 而不是MyViewController。
所以,给nav
一个代理人实施navigationControllerSupportedInterfaceOrientations:
- 一切都会好的。
答案 1 :(得分:1)
您在supportedInterfaceOrientations
方法中返回了错误的值。
您需要返回UIInterfaceOrientationMaskPortrait
。
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}