在 swift 中禁用 xib 的屏幕旋转

Disable screen rotation of a xib in swift

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

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

override var shouldAutorotate: Bool {
    return true
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return .portrait
}

经过这么长时间我终于找到了解决办法。 我在我打开 .xib 文件的框架中创建了一个视图控制器 class。 我在新创建的视图控制器中包含了以下功能

override var shouldAutorotate: Bool {
    return true
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return .portrait
}

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

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

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

dismiss(animated: false, completion: nil)

因此问题解决了。