Ios 部队横向定向,Swift

Ios 部队横向定向,Swift,ios,swift,orientation,Ios,Swift,Orientation,我有一个在纵向视图中设计的视图控制器。我有另一个在横向视图中设计的视图控制器(在故事板中)。在我的第一个视图控制器(纵向VC)上,我有一个按钮,可以将您带到横向VC。单击该按钮时,横向视图控制器最初显示在纵向视图中,在旋转之前不会更改。我想让这个景观视图控制器自动显示在景观中,而不必旋转它。 我一直在用swift编码,但运气不好。在我的plist菜单中,我启用了所有方向。 任何帮助都会很好。我正在处理一个类似的场景,我想加载并保持我的第一个ViewController为横向,同时允许子视图根据需

我有一个在纵向视图中设计的视图控制器。我有另一个在横向视图中设计的视图控制器(在故事板中)。在我的第一个视图控制器(纵向VC)上,我有一个按钮,可以将您带到横向VC。单击该按钮时,横向视图控制器最初显示在纵向视图中,在旋转之前不会更改。我想让这个景观视图控制器自动显示在景观中,而不必旋转它。 我一直在用swift编码,但运气不好。在我的plist菜单中,我启用了所有方向。
任何帮助都会很好。

我正在处理一个类似的场景,我想加载并保持我的第一个ViewController为横向,同时允许子视图根据需要切换

我认为

override func viewDidLoad() {
    super.viewDidLoad()
    let value = UIInterfaceOrientation.LandscapeLeft.rawValue
    UIDevice.currentDevice().setValue(value, forKey: "orientation")
}
Swift 4

 override func viewDidLoad() {
        super.viewDidLoad()
        let value = UIInterfaceOrientation.landscapeLeft.rawValue
        UIDevice.current.setValue(value, forKey: "orientation")
    }

应该以横向模式加载视图…但如果以纵向方向握住手机,它很快就会旋转…这就是我所处的部分…如何防止旋转。

您应该将此添加到
第二个viewcontroller
(设计为横向)中的
viewDidLoad

它位于
swift3

let value =  UIInterfaceOrientation.landscapeLeft.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
UIViewController.attemptRotationToDeviceOrientation()

希望它能对您有所帮助:)

我认为实现这一点的最佳和最可靠的方法是覆盖两个属性,并避免强制更改窗口的方向(如其他人所建议的)

这就是我如何让我的一个视图控制器始终以横向模式显示,并保持在那里,而不影响整个导航堆栈。将这两个替代添加到横向视图控制器:

覆盖变量应自动旋转:Bool{
假的
}
这将防止视图控制器在设备方向更改时自动旋转。现在视图控制器不再自行旋转,您只需请求所需的方向:

覆盖var PreferredInterfaceOrientation for Presentation:UIInterfaceOrientation{
UIInterfaceOrientation.landscapeLeft
}

瞧!应该做您想做的。

您可以为视图控制器的
supportedInterfaceOrientations
方法实现适当的代码。还可以看看相关的定向方法。