快速禁用xib的屏幕旋转

Posted

技术标签:

【中文标题】快速禁用xib的屏幕旋转【英文标题】:Disable screen rotation of a xib in swift 【发布时间】:2018-11-01 09:32:54 【问题描述】:

我在 swift 中创建了一个动态框架,其中每当 voip 通知登陆时,我的框架内的一个 .xib 文件就会打开。 我只想将屏幕的方向限制为纵向模式,但我不知道该怎么做。

我尝试了以下方法,但这些方法只能在 UIViewController 中使用,而不能在 UIView 中使用。

override var shouldAutorotate: Bool 
    return true

override var supportedInterfaceOrientations: UIInterfaceOrientationMask 
    return .portrait

【问题讨论】:

你不能限制视图的旋转,你可以限制视图控制器,所以在你展示视图的容器视图控制器中添加这样的东西:swiftdeveloperblog.com/code-examples/… @BencePattogato 我很欣赏你的建议,但正如我所提到的,我已经按照你的建议做了。我正在使用 VOIP 通知和 callkit,因此当 VOIP 通知到达时我不知道活动的视图控制器,因此我想限制我的 UIView。 【参考方案1】:

经过这么长时间,我终于想出了解决方案。 我在我的框架中创建了一个视图控制器类,我从中打开 .xib 文件。 我在新创建的视图控制器中包含了以下功能

override var shouldAutorotate: Bool 
    return true

override var supportedInterfaceOrientations: UIInterfaceOrientationMask 
    return .portrait

现在在打开 .xib 之前,我在当前视图控制器的顶部显示了这个视图控制器,即我从它自己的文件中调用了这个视图控制器,有点像这样

self.navCtrl?.present(self, animated: false, completion: nil)

通过这样做,我的 .xib 文件在我的框架的视图控制器而不是应用程序的视图控制器上方打开。要关闭此视图控制器,只需使用

dismiss(animated: false, completion: nil)

因此问题解决了。

【讨论】:

以上是关于快速禁用xib的屏幕旋转的主要内容,如果未能解决你的问题,请参考以下文章

暂时,以编程方式禁用 Qt 中的屏幕旋转

启动后禁用屏幕旋转? [复制]

如何禁用屏幕旋转(react-native)?

如何在快速屏幕旋转后获得视图的高度?

反应本机禁用自动旋转[重复]

如何在设备旋转后以编程方式创建的 UIButtons 保持在屏幕底部?