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