我知道这是最常被问到的问题,相信我,我已经尝试了各种组合来实现这一点,并且浏览了这里关于堆栈溢出的大多数帖子。
我有一个名为 v1ViewController 的 UINavigationController ,我想要做的是当它显示给用户时,我只想让它以纵向或纵向上下模式显示,即使用户旋转设备也没有横向景观它不应该做任何事情。
注意:我确实在 Xcode 中突出显示了支持界面方向的所有选项,因为在我的其他视图控制器之一中,我需要在横向和纵向模式下向用户展示一些东西,但是对于这个 UINav Conrtoller,我希望它只保持纵向模式。
我为 iOS 5.0 编写的代码可以正常工作,没有问题。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if (interfaceOrientation == UIInterfaceOrientationPortrait)
{
return YES;
}
else if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
return YES;
}
else
{
return NO;
}
}
我的头疼是 iOS 6。无论我尝试做什么,它仍然让用户在横向旋转血腥的东西(见代码和截图)
// *********************
// iPhone 5 orientation support
// *********************
- (BOOL)shouldAutorotate
{
UIInterfaceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
if (interfaceOrientation == UIInterfaceOrientationPortrait)
{
return YES;
}
else if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
return YES;
}
else
{
return NO;
}
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}