2016-02-27 45 views
12

我有一個UIViewcontroller,它包含一個帶有AVPlayer的AVPlayerViewController。 我想爲AVPlayerViewController啓用旋轉(當視頻處於全屏模式時)並禁用UIViewController的任何旋轉。 如何在我的應用程序中爲視頻啓用旋轉(全屏)?iOS:AVPlayerViewController在面向人像的應用程序中啓用全屏旋轉

+0

你有沒有實施'supportedInterfaceOrientations'是否正確? – matt

+0

@matt我只是在supportedInterfaceOrientations方法中返回UIInterfaceOrientationMaskPortrait。 UIViewController不旋轉和AVPlayer。 – ton252

回答

11

雨燕2.2 在AppDelegate中允許球員輪換:

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 
    } 

比創建和使用AVPlayerViewController的子類回縱向模式時,玩家退出全屏模式:

class YourVideoPlayer: AVPlayerViewController { 

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

太棒了!你在哪裏找到有關avplayer的信息? –

0

您必須在項目級別啓用允許的旋轉,然後限制所有不想旋轉的viewController的旋轉。即如果您有5個viewController,則需要限制它們中的4個旋轉,並且只允許在播放器控制器上旋轉。你可以看到更多關於這個這裏Handling autorotation for one view controller in iOS7

0

對我來說這樣比較好。只是延長AVPlayerViewController

import AVKit 
import UIKit 

class AVPlayerViewControllerRotatable: AVPlayerViewController { 

    override var shouldAutorotate: Bool { 
     return true 
    } 

} 

斯威夫特4

相關問題