我知道这是最常见的问题,相信我,我已经尝试了各种组合来实现这一目标,并且在堆栈溢出中浏览了大多数文章。
我有一个名为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;
}
}
我最头痛的是iOS6。无论我如何尝试,仍然可以让用户在风景中旋转血腥的东西(请参阅代码和屏幕截图)
// *********************
// 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;
}
最佳答案
您需要确保覆盖基础UINavigationController并为其分配一个自定义类(而不仅仅是作为UINavController子视图的viewController..ie,该视图包含在navigationBar之下)。在UINavigationController内部,对shouldAutoRotate返回NO。
关于iphone - 支持的定向疯狂,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17157485/