Ich möchte Video im Querformat im Vollbildmodus wiedergeben. Und meine Anwendung ist im Hochformat gesperrt. Wie dies zu implementieren ist. Bitte hilf mir. Vielen Dank im VorausVideo im Vollbildmodus im Querformat wiedergeben, wenn meine gesamte Anwendung im Hochformat gesperrt ist
Antwort
Ich habe dies in einer meiner App getan. Um dies zu tun, müssen Sie überprüfen, dass Ihr Viewcontroller ist, wo Sie ein Video abspielen möchten.
Das erste, was Sie tun müssen, Check Geräteausrichtung auf Hochformat ist, links Landschaft, Landschaft direkt in Ihrem Projektziel
In Ihrem AppDelegate tun den Code unten
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{ UIStoryboard *mainStoryboard; if (IS_IPHONE) { mainStoryboard= [UIStoryboard storyboardWithName:@"Main" bundle: nil]; } else{ mainStoryboard= [UIStoryboard storyboardWithName:@"Main_iPad" bundle: nil]; } ViewControllerThatPlaysVideo *currentViewController= ViewControllerThatPlaysVideo*)[mainStoryboard instantiateViewControllerWithIdentifier:@"postDetailView"]; if(navigationController.visibleViewController isKindOfClass: [ViewControllerThatPlaysVideo class]]){ if([currentViewController playerState]) return UIInterfaceOrientationMaskLandscape|UIInterfaceOrientationMaskPortrait; return UIInterfaceOrientationMaskPortrait; } return UIInterfaceOrientationMaskPortrait; }
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
nennen Sie es einfach in - viewDidAppear:
der dargebotenen View-Controller.
Ein anderer Weg:
Zuerst müssen Sie verstehen, dass, um sogar aus über 100 in der Landschaft nur eine Ansicht zu öffnen, Ihre App sowohl Landschafts- und Portrait-Schnittstelle Orientierungen ermöglichen sollen. Dies ist standardmäßig der Fall, aber Sie können dies in den Einstellungen Ihres Ziels überprüfen, Registerkarte Allgemein, Bereich Bereitstellungsinformationen
Da Sie dann Querformat und Hochformat für die gesamte App zugelassen haben, müssen Sie jedes Porträt angeben UIViewController
, dass es nicht autorotate soll, ist diese Methode der Implementierung und fügte hinzu: -
- (BOOL)shouldAutorotate {
return NO;
}
schließlich für Ihre spezifischen Landschafts nur Controller, und weil Sie sagen, Sie es modal präsentieren, können Sie nur diese Methoden implementieren: -
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationLandscapeLeft; // or Right of course
}
-(UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
Hoffe, das wird helfen :)
Meine Ansicht rotiert perfekt, aber Video ist nicht in Landschaft spielen. Plz überprüfe meinen Screenshot. @Lion –
dieser Viewcontroller rotiert nicht in der Landschaft nach Ihrem Screenshot. Also versuche meine Antwort.Erlaube 'Autorotation' zu' videoPlayerViewController' und setze die Ausrichtung landscapeLeft für diesen Videoplayerviewcontroller – Lion
Einfachste Lösung in swift 3 Fügen Sie dies Ihrem App-Delegierten hinzu:
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
if window == self.window {
return .portrait
} else {
return .allButUpsideDown
}
}
Man, du rockst! Einfache und elegante Lösung. Du hast meinen Tag gerettet. Danke. – rmvz3
Das ist großartig! Ich bekomme allerdings einen seltsamen Fehler. Wenn der Benutzer im Querformat auf das Video klickt, wird die Navigationsleiste für alle View-Controller um etwa 30 Pixel nach oben verschoben. Irgendwelche Ideen zu einer Lösung dafür? – Groovietunes
Ich habe meine Antwort [oben (Akzeptiert: P)] (https://StackOverflow.com/a/36760674/3308174) gepostet, aber jetzt benutze ich einen neuen Ansatz wie deinen, aber in ObjC. –
Nach fast einen ganzen Tag lang auf dieser Seite starrte ich endlich eine Arbeitszeit sparende Lösung für alle herausgefunden,
Zum Projektnavigator wählen Sie Ihr Projekt und im Allgemeinen wählen Sie einfach Potrait in Geräteausrichtung.
Stellen Sie außerdem sicher, dass Sie einen modalen segue verwenden, um den landscapeController anzuzeigen.
Jetzt fügen Sie dies in Ihrem Controller, wo Sie den Querformat-Modus möchten.
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
}
override var shouldAutorotate: Bool {
return false
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .landscapeRight
}
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
return .landscapeRight
}
Und das ist es Leute.
Dieser ist die perfekte Antwort. – Hemang
@Pratik Jamariya: Vielen Dank. U hat meine Zeit gerettet. –
Was ist der * playerstate *, auf den du dich im oben genannten Code beziehst? Geht es um den Zustand des Videoplayers? –