ios - Swift 3 - 强制自转

标签 ios swift autorotate

我正在使用 this代码。

例如,我有 view1(仅纵向)和 view2(纵向+横向)。当您在 view1 中并单击一个按钮时,您会在整个屏幕上打开带有弹出窗口的 view2。当您关闭 view2 并且 view1 变得可见时,如果 View 2 处于横向状态,我想自动将其转换为纵向模式。有什么建议吗?

最佳答案

正如您所说的,您使用的是弹出窗口,我确定您使用的是导航 Controller 。这是 View 层次结构。

三个viewController对应xib。

viewController 仅设置为portrait,secondViewController 设置为portrait and landScapeLeft(您可以根据需要更改)。它可以按照您的要求正常工作。当第二张是横屏时,弹到第一张,会强制设置为竖屏。

NavViewController

View Controller

SecondViewController

views hierarchy

//NavViewController.swift

class NavViewController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override var shouldAutorotate: Bool {
        return (visibleViewController?.shouldAutorotate)!
    }

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return (visibleViewController?.supportedInterfaceOrientations)!
    }
}

//ViewController.swift

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    override var shouldAutorotate: Bool {
        return false
    }

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .portrait
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        let value =  UIInterfaceOrientation.portrait.rawValue
        UIDevice.current.setValue(value, forKey: "orientation")
        UIViewController.attemptRotationToDeviceOrientation()
    }
}

SecondViewController.swift 类 SecondViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    override var shouldAutorotate: Bool {
        return true
    }

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return [.portrait, .landscapeLeft]
    }
}

关于ios - Swift 3 - 强制自转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41233122/

相关文章:

iphone - iPhone : networkStatusForFlags 上的可达性问题

具有核心数据/MagicalRecord 意外行为的 iOS 单元测试

ios - AVPlayer 中的 SeekToTime 在前进时停止播放流音频

ios - 覆盖 shouldAutorotate 在 Swift 3 中不起作用

ios - 为什么委托(delegate)方法可以在不声明协议(protocol)一致性的情况下工作?

ios - 我的 firebase int 返回 nil

ios - Swift:使用私有(private)框架

ios - 是否可以在透明部分标题后面 "hide"UITableViewCell?

iphone - 是否可以自动旋转模态视图而不是其父 View ?

iphone - iOS : How can I rotate a view control when another view segues to it?