我的应用程序配置为仅限肖像。 我想要自动旋转的只有两个视图。 因此,在申请代表中,我已经覆盖了以下功能:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskAll;
}
我的所有观点都继承了一个视图,其中我重写了以下功能:
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
这样我就可以将所有视图保持为纵向。
在我想要自动旋转的两个视图中,我覆盖了以下方法:
- (BOOL)shouldAutorotate
{
return YES;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationPortrait | UIInterfaceOrientationPortraitUpsideDown | UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
}
这也符合预期。
然而,以模式方式显示的视图正在以设备方向打开 - 如果我将设备旋转到横向并以模态方式打开视图,即使它继承主视图并且不覆盖这些方法,也会获得横向布局。
答案 0 :(得分:0)
为此找到了理由和解决方案。
我的视图由UINavigationController管理,因此需要对其进行子类化并以完全相同的方式覆盖上述所有功能。
答案 1 :(得分:-1)
您的纵向视图应自动旋转,但仅限于纵向:
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}