支持 iOS 库中的特定设备方向 - 一处更改

Posted

技术标签:

【中文标题】支持 iOS 库中的特定设备方向 - 一处更改【英文标题】:Supporting specific device orientation in a iOS library - one place change 【发布时间】:2014-01-15 22:36:38 【问题描述】:

我有一个包含多个视图控制器的应用程序。我需要共享图书馆。我的应用程序只支持横向模式。我是否需要在我的所有视图控制器中实现以下方法以仅返回横向模式,或者我可以为我的库做任何一次地方更改。对于独立应用程序,我知道我们可以在 info.plist 中设置它,但库中没有该选项。有什么建议吗?

- (BOOL)shouldAutorotate;
- (NSUInteger)supportedInterfaceOrientations;

【问题讨论】:

【参考方案1】:

这取决于,有点。

嵌入在导航控制器或标签栏控制器等事物中的视图控制器会根据该控制器旋转。例如,如果您的整个应用程序嵌套在 Tab Bar Controller 中,您可以继承 Tab Bar Controller 并覆盖这些方法,现在您的整个应用程序都遵循这些规则,因为根控制器决定了旋转规则。

但如果您以模态方式显示视图,则模态视图将有自己的旋转规则。

我能想到的最简单的事情是继承 UIViewController 并覆盖这些方法(并且只覆盖这些方法)。现在让你的每个其他视图控制器成为这个子类的子类。现在您的视图控制器都遵循您在其超类中编写的逻辑。

【讨论】:

所以我的应用程序主要是基于导航控制器的应用程序,有多个地方我以模态方式显示视图控制器,每个视图控制器都有自己的导航栏控制器。我应该继承导航控制器还是 UIViewController? 那么,它是一个以模态方式呈现其他导航控制器的导航控制器吗?是否有任何不在导航控制器中的视图控制器? 没有。每个视图控制器中都有导航控制器。 这种情况下,你只需要继承UINavigationController,重写旋转方法,让你所有的导航控制器都使用这个类。

以上是关于支持 iOS 库中的特定设备方向 - 一处更改的主要内容,如果未能解决你的问题,请参考以下文章

快速方向视图更改

iOS 方向在特定屏幕上支持横向和纵向 - 不是所有屏幕

在设备方向更改时交叉淡入某些 UIView

不推荐使用 setStatusBarOrientation,如何在 ios10 中更改设备方向

ios6设备不支持方向

以编程方式快速更改设备方向 4 IOS 11 [重复]