2016-06-14 4 views
0

Ich habe eine viewcontroller, die nur eine webview enthält. Der Inhalt dieser Webansicht ist jedoch sehr breit, daher muss ich dies im landscape Modus zeigen.Wie man eine Webview in einem Landschaftsansichtcontroller in swift anzeigt?

Die Frage ist, wie man den Webview oder den gesamten Ansichtscontroller dreht?

Ich versuchte, die orientations so zu ändern, aber hat nicht funktioniert:

override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation { 
    return .LandscapeLeft 
} 

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
    return .Landscape 
} 
+0

Sie wollen es immer in Landschaft laufen? –

+0

Ja möchte diesen einen bestimmten Viewcontroller in Querformat sperren. –

+0

override shouldAutorotate in Sicht Controller und Rückgabe True –

Antwort

0

in AppDelegate

func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask { 
    return UIInterfaceOrientationMask.Landscape 
} 
0

Wenn Sie die Orientierung für diese eine Seite sperren wollen nur, gehen Sie wie folgt :

Fügen Sie dies Ihrer ViewDidLoad() auf der Seite hinzu, die Sie nur in Landscape haben möchten.

let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
      appdelegate.shouldRotate = false 

      UIDevice.currentDevice().setValue(UIInterfaceOrientation.Landscape.rawValue, forKey: "orientation") 

Fügen Sie die folgenden Funktionen in Ihre Klasse ein.

override func shouldAutorotate() -> Bool { 
     // Lock autorotate 
     return false 
    } 

    override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
     return [UIInterfaceOrientationMask.Landscape] 
    } 


    override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation { 
     // Only allow Portrait 
     return UIInterfaceOrientation.Landscape 
    } 

Wenn Sie die Seite verlassen, schalte es mit dem Hinzufügen von den folgenden Code:

override func viewWillDisappear(animated: Bool) { 
     let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
     appdelegate.shouldRotate = true 
    } 

In Ihrem AppDelegate, setzen Sie den folgenden Code ein:

var shouldRotate = true 

    //MARK: - Func to rotate only one view controller 
    func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask { 
     if (shouldRotate == true){ 
      return UIInterfaceOrientationMask.All 
     } 

     return UIInterfaceOrientationMask.Landscape 

    } 
+0

Wert des Typs 'AppDelegate' hat kein Mitglied 'shouldRotate'. Bist du dir sicher über diese Methode? –

+0

Code für das Appdelegate hinzugefügt, vergessen, es dort zu setzen, sorry: D – SoundShock

+0

@TheCook hat es funktioniert? Wenn ja, bitte markieren Sie die Antwort, danke! – SoundShock

0

Es funktioniert perfekt:

Setzen Sie dies in die viewDidLoad:

let value = UIInterfaceOrientation.LandscapeLeft.rawValue 
UIDevice.currentDevice().setValue(value, forKey: "orientation") 

und

override func shouldAutorotate() -> Bool 
{ 
    return true 
} 
Verwandte Themen