我有一个问题。我的应用主要处于肖像模式,但对于一些ViewController,我想让它可以旋转到景观模式。该代码适用于TopViewController,这是我要旋转的代码,但是由于它是一种image弹出式viewController,您还可以看到后面的控制器也可以旋转。我不想要那个。我只想使弹出式controller可旋转。我该怎么办,只有topViewController旋转?
我已经在AppDelegate中具有以下代码:
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
if let rootViewController = self.topViewControllerWithRootViewController(rootViewController: window?.rootViewController) {
if (rootViewController.responds(to: Selector(("canRotate")))) {
return .allButUpsideDown;
}
}
return .portrait;
}
private func topViewControllerWithRootViewController(rootViewController: UIViewController!) -> UIViewController? {
if (rootViewController == nil) { return nil }
if (rootViewController.isKind(of: UITabBarController.self)) {
return topViewControllerWithRootViewController(rootViewController: (rootViewController as! UITabBarController).selectedViewController)
} else if (rootViewController.isKind(of: UINavigationController.self)) {
return topViewControllerWithRootViewController(rootViewController: (rootViewController as! UINavigationController).visibleViewController)
} else if (rootViewController.presentedViewController != nil) {
return topViewControllerWithRootViewController(rootViewController: rootViewController.presentedViewController)
}
return rootViewController
}
和我的ViewControllers文件:
@IBAction func didDismissButtonPress(sender: UIButton) {
self.dismiss(animated: true) { () -> Void in
UIDevice.current.setValue(Int(UIInterfaceOrientation.portrait.rawValue), forKey: "orientation")
}
}
预先感谢您的回答。
首先转到目标的设置 ->常规选项卡 ->部署信息部分,在设备方向中选择肖像,左派左和景观右侧。现在,您可以在POP下方延长视图controller的情况下
extension BelowVC {
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.portrait
}
}
同样,您可以限制VC的任何一个。