你可以在这里找到更多答案:https://stackoverflow.com/a/50126802/5200447
这适用于Swift3和Swift 4.您可以在AppDelegate.swift中使用以下代码:
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { guard let rootViewController = self.topViewControllerWithRootViewController(rootViewController: window?.rootViewController), (rootViewController.responds(to: Selector(("canRotate")))) else{ // Only allow portrait (standard behaviour) return .portrait; } // Unlock landscape view orientations for this view controller return .allButUpsideDown; } private func topViewControllerWithRootViewController(rootViewController: UIViewController!) -> UIViewController? { guard rootViewController != nil else { return nil } guard !(rootViewController.isKind(of: (UITabBarController).self)) else{ return topViewControllerWithRootViewController(rootViewController: (rootViewController as! UITabBarController).selectedViewController) } guard !(rootViewController.isKind(of:(UINavigationController).self)) else{ return topViewControllerWithRootViewController(rootViewController: (rootViewController as! UINavigationController).visibleViewController) } guard !(rootViewController.presentedViewController != nil) else{ return topViewControllerWithRootViewController(rootViewController: rootViewController.presentedViewController) } return rootViewController }
您可以在原帖中了解更多信息:http://www.jairobjunior.com/blog/2016/03/05/how-to-rotate-only-one-view-controller-to-landscape-in-ios-slash -迅速/