仅使顶部视频程序旋转



我有一个问题。我的应用主要处于肖像模式,但对于一些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的任何一个。

最新更新