【问题标题】:Disable screen rotation of a xib in swift快速禁用xib的屏幕旋转
【发布时间】: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。

标签: ios uiview uiviewcontroller uikit swift-framework


【解决方案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)

因此问题解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 2017-04-19
    • 2012-07-21
    • 2011-03-20
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多