故事板忽略 UIInterfaceOrientation 设置

Storyboard ignores UIInterfaceOrientation settings

我对 UIInterfaceOrientation 有一个奇怪的问题。在我的项目中有许多不同的视图,其中一些应该以横向模式旋转,而另一些则不应该。问题是所有不是使用情节提要创建的视图,其中只启用了 UIInterfaceOrientation 肖像,这工作正常并且视图不旋转,而是使用情节提要创建的所有视图,即使 UIInterfaceOrientation 横向模式被禁用,它们继续旋转。在我的 Xcode 项目设置中,这些检查已启用,我无法更改它们:

如何在所有不同的视图中完全禁用设备旋转? [是否有故事板].

这是我用来在所有故事板视图控制器中禁用设备方向的代码,但它不起作用:

- (BOOL)shouldAutorotate {
    return NO;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

试试这个代码,也许它对你有用。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientationMask)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationMaskPortrait);
}

请检查您的项目 .plist 中是否有不止一项用于定位或一些奇怪的东西。我有时发现 orientation 在 plist 或重复键中有不同的值。 希望对你有帮助

解决方案是在 Storyboard 文件中将 UINavigationController class 分配给 UINavigationController 并将此代码放在他的 .m 文件中:

- (BOOL)shouldAutorotate {
    return NO;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return UIInterfaceOrientationIsPortrait(toInterfaceOrientation);
}