如何在 iOS 8 中的模态视图控制器中强制纵向显示?
How do I force portrait orientation in a modal view controller in iOS 8?
这是我只想以纵向显示的视图控制器的视图控制器代码...
- (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 的应用程序。
提前感谢您的智慧!
您 return 在您的 supportedInterfaceOrientations
方法中输入了错误的值。
您需要 return UIInterfaceOrientationMaskPortrait
.
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
问题是您为错误的对象设置了 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:
的委托 - 一切都会好起来的。
这是我只想以纵向显示的视图控制器的视图控制器代码...
- (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 的应用程序。
提前感谢您的智慧!
您 return 在您的 supportedInterfaceOrientations
方法中输入了错误的值。
您需要 return UIInterfaceOrientationMaskPortrait
.
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
问题是您为错误的对象设置了 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:
的委托 - 一切都会好起来的。