我正在开发一个只能以纵向模式访问的iOS应用。

除了我正在使用的1个框架(我的地图中80个屏幕中的1个)之外,还需要Landscape支持。因此,我不得不在我的列表中允许它。

确保所有其他视图以纵向显示并且只能以纵向显示的最简单方法是什么?

关于我的项目的一件好事是,所有其他ViewController都继承自ProjectViewController。

最好使用Swift的答案。

最佳答案

class ProjectViewController: UIViewController {
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .portrait
    }
}

class RegularViewController: ProjectViewController {
    // do not neeed to override supportedInterfaceOrientations
}

class OneSpecificViewController: ProjectViewController {
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return [.portrait, .landscape]
    }
}

如果您的视图控制器嵌入在导航控制器中,则可以将其子类化,如下所示:
class CustomNavigationController: UINavigationController {
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        guard let topViewController = topViewController else {
            // default
            return .portrait
        }

        return topViewController.supportedInterfaceOrientations
    }
}

甚至更短...
class CustomNavigationController: UINavigationController {
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return topViewController?.supportedInterfaceOrientations ?? .portrait
    }
}

关于ios - 将除1以外的所有屏幕方向锁定为纵向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42904099/

10-12 02:34