Search code examples
swiftorientationsfsafariviewcontroller

SafariViewController in Landscape Mode


i have a ViewController that is only in Portrait mode. It presents a SafariViewController. Is it possible to change the orientation of the SafariViewController to Landscape maintaining the Portrait for the ViewController?


Solution

  • This works with Swift 4.2. You have to add this method in your viewController to maintain portrait orientation

    override var supportedInterfaceOrientations:UIInterfaceOrientationMask {
        return UIInterfaceOrientationMask.portrait
    }
    

    and you also must declare

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    

    Also in your AppDelegate you have to add

    var myOrientation: UIInterfaceOrientationMask = .portrait
    
    func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
        return myOrientation
    }
    

    and this when you are creating the SFSafariViewController

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
        appDelegate.myOrientation = .all