仍在使用包含视频的应用程序,我在自定义播放器时遇到了几个问题(你可以看到我关于mpmoviemediaplayer的问题) .

这里我在嵌入式视图中使用了AVPlayerViewController . 我想创建几个海关按钮,一个是全屏 . 如果设备处于纵向状态,则点击视频时必须以横向右侧模式显示(同样设备在右侧旋转) .

我找到了一种方法,但它并不是很干净,因为在纵向模式下,当横向全屏视频时,我总是在设备顶部有状态栏 .

此外,我想覆盖嵌入视频上的按钮和全屏视频中的按钮

有人可以帮我吗?

谢谢

let playerController:AVPlayerViewController = AVPlayerViewController()

var player:AVPlayer!
var filePath: NSURL!


@IBOutlet weak var fullscreenbutton: UIButton!
@IBOutlet weak var exitfullscreenbutton: UIButton!


override func viewDidLoad() {
    super.viewDidLoad()

    self.filePath = NSBundle.mainBundle().URLForResource("jojo", withExtension: "mov")


    self.player = AVPlayer(URL:filePath)
    playerController.player = player

    playerController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, 250)
    playerController.showsPlaybackControls = false // masque les contrôles de la vidéo
    playerController.videoGravity = AVLayerVideoGravityResizeAspectFill
    playerController.view.hidden = false
    self.addChildViewController(playerController)
    self.view.addSubview(playerController.view)
    playerController.didMoveToParentViewController(self)


    player.play()


    var currentDevice = UIDevice.beginGeneratingDeviceOrientationNotifications
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "deviceOrientationDidChange:" , name:
    UIDeviceOrientationDidChangeNotification, object: nil)
}


func deviceOrientationDidChange(notify: NSNotification){

    var orientation:UIDeviceOrientation = UIDevice.currentDevice().orientation
    switch (orientation) {
    case .LandscapeLeft:
        //self.view.autoresizingMask = (.FlexibleWidth | .FlexibleHeight | .FlexibleLeftMargin | .FlexibleRightMargin | .FlexibleTopMargin | .FlexibleBottomMargin)


       self.playerController.view.frame = CGRectMake(0, 0, self.view.bounds.width, self.view.bounds.height)
        break
    case .LandscapeRight:
       self.playerController.view.frame = CGRectMake(0, 0, self.view.bounds.width, self.view.bounds.height)

        break
    case .PortraitUpsideDown:

        break
    case .Portrait:
        self.playerController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, 250)
        break
    default:
        println("Unknown orientation: \(orientation)")
    }

}


@IBAction func fullScreenBtn(sender: AnyObject) {

    self.view.autoresizingMask = (.FlexibleWidth | .FlexibleTopMargin)

    self.playerController.view.frame = CGRectMake(0, self.view.bounds.size.height,  self.view.bounds.width, -self.view.bounds.height)
    self.playerController.view.transform = CGAffineTransformMakeRotation(CGFloat(3 * M_PI / 2))


}