2016-02-27 16 views
12

Ich habe einen UIViewcontroller, der einen AVPlayerViewController mit AVPlayer enthält. Ich möchte die Rotation für AVPlayerViewController aktivieren (wenn das Video im Vollbildmodus ist) und jede Drehung für UIViewController deaktivieren. Wie kann ich die Rotation nur für Videos (auf Vollbild) in meiner App aktivieren?iOS: AVPlayerViewController aktivieren Vollbild-Rotation in Hochformat-Anwendung

+0

Haben Sie implementiert 'supportedInterfaceOrientations' angemessen? – matt

+0

@matt Ich gebe nur UIInterfaceOrientationMaskPortrait in supportedInterfaceOrientations -Methode zurück. UIViewController rotiert nicht und AVPlayer zu. – ton252

Antwort

11

Swift 2.2 In AppDelegate mehr dazu hier sehen Drehung für den Spieler zu ermöglichen:

func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask { 
     guard let vc = (window?.rootViewController?.presentedViewController) else { 
      return .Portrait 
     } 

     if (vc.isKindOfClass(NSClassFromString("AVFullScreenViewController")!)) { 
      return .AllButUpsideDown 
     } 

     return .Portrait 
    } 

als erstellen und Unterklasse von AVPlayerViewController für zurück zu Portrait-Modus verwenden, wenn der Spieler Vollbildmodus beenden :

class YourVideoPlayer: AVPlayerViewController { 

    override func viewDidLayoutSubviews() { 
     super.viewDidLayoutSubviews() 
     if view.bounds == contentOverlayView?.bounds { 
UIDevice.currentDevice().setValue(UIInterfaceOrientation.Portrait.rawValue, forKey: "orientation") 
     } 
    } 
+1

Super! Wo hast du die Informationen über Avplayer gefunden? –

0

Sie müssen die zulässigen Rotationen auf der Projektebene aktivieren und dann die Rotation auf alle ViewControllers beschränken, die NICHT gedreht werden sollen. Wenn Sie also 5 viewControllers haben, müssen Sie die Rotation auf 4 davon beschränken und nur die Drehung auf dem Player-Controller erlauben. Sie können Handling autorotation for one view controller in iOS7

0

Für mich war das besser. erstrecken sich nur AVPlayerViewController:

import AVKit 
import UIKit 

class AVPlayerViewControllerRotatable: AVPlayerViewController { 

    override var shouldAutorotate: Bool { 
     return true 
    } 

} 

Swift 4