我正在开发一个处于纵向模式的应用程序。 但是我希望一个视图控制器应该以横向和纵向模式显示。
我尝试了以下代码,但它不起作用(未调用)。
- (BOOL) shouldAutorotate
{
return NO;
}
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return UIInterfaceOrientationMaskPortrait;
}
答案 0 :(得分:0)
首先,您需要在plist中设置应用支持的所有方向,这可以在' General'项目中的选项卡"部署信息",例如:
然后,您可以使用方法supportedInterfaceOrientations
,
我假设您以模态方式呈现视图控制器,因此只需在呈现的viewController上覆盖它,它只需要在纵向使用:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
并在你提出的viewController中,它也应该支持横向,使用:(或你想要的任何方向掩码)
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
P.S - 对于以模态方式呈现的viewController和推入navigationController堆栈的viewController,存在不同的行为:
supportedInterfaceOrientations
,并支持这些方向supportedInterfaceOrientations
,并支持这些方向。所以,如果你以模态方式呈现viewController,你需要覆盖它自己的supportedInterfaceOrientations
,但如果你推动这个viewController,你需要在navigationController中设置一些BOOL属性,这样它就会知道哪个方向为支持。
我建议你以模态方式呈现这个viewController,将modalViewController用于不同的设备方向更自然。
PS#2 :关于shouldAutorotate
:如果它返回'否',则不会调用supportedInterfaceOrientations
,所以返回'是& #39 ;.它只说,如果设备旋转时自动旋转。如果它返回' NO',则需要显式旋转viewController。
嗯,我希望我帮助过,并没有写出一个完全不符合你要求的答案......:)