Ho un controllore UIView, che contiene un AVPlayerViewController con AVPlayer. Voglio abilitare la rotazione per AVPlayerViewController (quando il video è a schermo intero) e disabilitare qualsiasi rotazione per UIViewController. Come posso abilitare la rotazione solo per i video (a schermo intero) nella mia app?iOS: AVPlayerViewController abilita la rotazione a schermo intero nell'applicazione con orientamento verticale
risposta
Swift 2.2 In AppDelegate per consentire la rotazione per il giocatore:
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
}
che creare e utilizzare sottoclasse di AVPlayerViewController per tornare a modalità verticale quando la modalità a schermo intero giocatore uscita :
class YourVideoPlayer: AVPlayerViewController {
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if view.bounds == contentOverlayView?.bounds {
UIDevice.currentDevice().setValue(UIInterfaceOrientation.Portrait.rawValue, forKey: "orientation")
}
}
Fantastico! Dove hai trovato le informazioni su avplayer? –
È necessario abilitare le rotazioni consentite a livello di progetto e quindi limitare la rotazione su tutti i controllori di vista che NON si desidera ruotare. Ad esempio, se hai 5 viewControllers, dovrai limitare la rotazione su 4 di essi e consentire solo la rotazione sul Player Controller. Si può vedere di più su questo qui Handling autorotation for one view controller in iOS7
Per me è stato meglio. Basta estendere AVPlayerViewController:
import AVKit
import UIKit
class AVPlayerViewControllerRotatable: AVPlayerViewController {
override var shouldAutorotate: Bool {
return true
}
}
Swift 4
Avete implementato 'supportedInterfaceOrientations' in modo appropriato? – matt
@matt Ho appena restituito UIInterfaceOrientationMaskPortrait nel metodo supportatoInterfaceOrientations. UIViewController non ruota e AVPlayer a. – ton252