MPMediaPlayerViewController和Orientation在SWIFT中发生变化

时间:2015-04-09 16:47:35

标签: ios xcode swift mpmovieplayercontroller

我想我在这里阅读了有关在SWIFT中使用MPMediaPlayerViewController播放视频但未找到答案的所有主题。

我的主要问题是关于方向:我有一个可以正常播放的嵌入式视频。当我在landscape mode(右或左)中旋转时,我可以全屏直接播放,但当我返回portrait时,视频内嵌效果不佳。

视频位于黑色矩形内部,但未显示。

非常感谢你的帮助,因为我花了好几天时间解决这个问题。

此致

var moviePlayerController: MPMoviePlayerController = MPMoviePlayerController()
let playerController:AVPlayerViewController = AVPlayerViewController()
var filePath: NSURL!


override func viewDidLoad() {
    super.viewDidLoad()

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

    self.moviePlayerController.contentURL = filePath
    self.moviePlayerController.prepareToPlay()
    self.moviePlayerController.repeatMode = .None
    self.moviePlayerController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, 250)
    self.moviePlayerController.scalingMode = .Fill //AspectFill ou  AspectFit
    self.moviePlayerController.controlStyle = .None
    self.view.addSubview(moviePlayerController.view)

    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.moviePlayerController.view.frame = self.view.frame
        self.moviePlayerController.setFullscreen(true, animated: true)

        self.moviePlayerController.view.transform = CGAffineTransformMakeRotation(CGFloat(M_PI / 2))
        break
    case .LandscapeRight:
        self.moviePlayerController.view.frame = self.view.frame
        self.moviePlayerController.setFullscreen(true, animated: true)
        self.moviePlayerController.view.transform = CGAffineTransformMakeRotation(CGFloat(3 * M_PI / 2))
        break
    case .PortraitUpsideDown:
        //self.moviePlayerController.view.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))
        break
    case .Portrait:
        self.moviePlayerController.setFullscreen(false, animated: true)

        self.moviePlayerController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, 250)

        self.moviePlayerController.scalingMode = .Fill
        self.moviePlayerController.view.transform =     CGAffineTransformMakeRotation(CGFloat(2 * M_PI))
        self.view.addSubview(moviePlayerController.view)

        break
    default:
        println("Unknown orientation: \(orientation)")
    }

}

0 个答案:

没有答案