繁体   English   中英

强制横向,Swift

[英]Force Landscape orientation, Swift

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

您应该在viewDidLoadsecond viewcontroller (设计为横向)中添加它

它在swift3

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

希望它会帮助你:)

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

我认为放置

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

斯威夫特 4

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

应该在横向模式下加载您的视图......但是如果以纵向方式拿着手机它很快就会旋转......这就是我所在的部分......如何防止旋转。

我相信实现这一目标的最好和最强大的方法是覆盖两个属性 - 并避免窗口的力方向变化(如其他人所建议的那样)。

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

override var shouldAutorotate: Bool {
    false
}

这将防止视图控制器在设备方向改变时自动旋转。 现在视图控制器不再自行旋转,您需要做的就是请求您想要的方向:

override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
    UIInterfaceOrientation.landscapeLeft
}

瞧! 应该做你想做的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM