我想我在这里阅读了有关在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)")
}
}