MvvmCross: So erzwingen Sie eine bestimmte Ausrichtung für MvxViewController in iOS 7 auf dem iPhone

In meiner iOS 7-App erlaube ich nur "Hochformat" in "Unterstützte Geräteorientierung" für die gesamte Anwendung, außer ich muss die "Querformat" -Orientierung in einer "Video-Player" -Ansicht erlauben. Wie kann ich das mit MvvmCross oder MvxViewController machen? Ich habe versucht, diese ShouldAutorotate () -, GetSupportedInterfaceOrientations () - Methoden zu setzen, es macht nichts. Der Portrait-Modus bleibt für die Ansicht "Video-Player" aktiviert. Weiß jemand, wie man eine Ansicht richtig ausrichtet?

 public class VideoPlayerView : MvxViewController
 {
    public override bool ShouldAutorotate()
    {
        return true;
    }

    public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations()
    {
        return UIInterfaceOrientationMask.AllButUpsideDown;
    }

    public override UIInterfaceOrientation PreferredInterfaceOrientationForPresentation()
    {
        return UIInterfaceOrientation.LandscapeLeft;
    }

    public override void ViewDidLoad(bool animated)
    {
        Title = "Video";

        base.ViewDidLoad(animated);
    }    

}

UPDATE: Ich habe herausgefunden, wie ich dieses Problem beheben kann.

Schritt 1) ​​Für mvvmcross müssen Sie einen neuen ViewPresenter einrichten, der von MvxModalNavSupportTouchViewPresenter erbt

Schritt 2) Erstellen Sie einen neuen Navigationscontroller, der von UINavigationController mit dem folgenden Code geerbt wird

            public override bool ShouldAutorotate()
            {
                return TopViewController.ShouldAutorotate();
            }

            public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations()
            {
                var orientation = TopViewController.GetSupportedInterfaceOrientations();
                return orientation;
            }

Schritt 3) Überschreiben Sie in dem neuen View Presenter, den Sie gerade in Schritt 1 erstellt haben, die CreateNavigationController-Methode und verwenden Sie den neuen NavigationController, den Sie in Schritt 2 erstellt haben.

Schritt 4) Auf dem ViewController, den Sie ausrichten möchten, können Sie die Ausrichtung ändern, indem Sie die GetSupportedInterfaceOrientations-Methode überschreiben. In meinem VideoPlayerView habe ich beispielsweise den folgenden Code.

    public override bool ShouldAutorotate()
    {
        return true;
    }

    public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations()
    {
        return UIInterfaceOrientationMask.AllButUpsideDown;
    }

Antworten auf die Frage(0)

Ihre Antwort auf die Frage