SWIFT中的AVPlayer自定义按钮全屏

时间:2015-04-10 10:23:01

标签: ios swift orientation fullscreen avplayer

仍在使用包含视频的应用,我在自定义播放器时遇到了一些问题(你可以看到我关于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))


}

0 个答案:

没有答案