2017-08-24 5 views
0

Je travaille sur une application iOS, dans laquelle tous les ViewControllers ne prennent en charge que l'orientation Portrait, à l'exception d'un ViewController qui prend en charge Portrait et paysage. J'essaie ce code pour ce ViewControllerPrise en charge de l'orientation paysage et portrait pour un contrôleur de vue spécifique dans ios, swift 3

override var shouldAutorotate: Bool { 
    return false 
} 

override var supportedInterfaceOrientations: UIInterfaceOrientationMask { 
    return .landscapeLeft 
} 

override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation { 
    return .landscapeLeft 
} 

mais cela n'a pas fonctionné, Quelqu'un peut-il aider? grâce

Répondre

0

à AppDelegate ajouter cet événement

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { 


    if let navigationController = UIApplication.topViewController() { 

     if navigationController is YOURVIEWCONTROLLERNAME { 
      return UIInterfaceOrientationMask.all 
     } 

     else { 
      return UIInterfaceOrientationMask.portrait 
     } 
    } 

    return UIInterfaceOrientationMask.portrait 
} 

extension UIApplication { 
class func topViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? { 
    if let nav = base as? UINavigationController { 
     return topViewController(base: nav.visibleViewController) 
    } 
    if let tab = base as? UITabBarController { 
     if let selected = tab.selectedViewController { 
      return topViewController(base: selected) 
     } 
    } 
    if let presented = base?.presentedViewController { 
     return topViewController(base: presented) 
    } 
    return base 
} 

changement YOURVIEWCONTROLLERNAME à votre contrôleur de vue

+0

c'est des œuvres, merci homme très bien – DevMhd