AVPlayerViewController播放视频分两种形式
一.初始化AVPlayerViewController
1
2
3
4
5
6
7
8
9
10
| func loadPlayer() -> Void {
guard let movieUrl = Bundle.main.path(forResource: "zh-zhfanti-en", ofType: "m4v") else {
return
}
let player = AVPlayer(url: URL(fileURLWithPath: movieUrl))
playerViewController = AVPlayerViewController()
playerViewController!.player = player
}
|
二.内嵌视图的形式显示
1
2
3
4
5
6
7
8
9
10
11
12
13
| @IBAction func handlePlayInViewEvent(sender: AnyObject) {
loadPlayer()
guard (playerViewController != nil) else {
return
}
containerView?.addSubview(playerViewController!.view)
playerViewController?.view.frame = containerView!.bounds
self.addChild(playerViewController!)
playerViewController?.player?.play()
}
|
效果图如下:
点击AVPlayerViewController
可以全屏播放
三.模态视图的形式显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| @IBAction func handlePlayWithModelViewEvent(sender: AnyObject) {
loadPlayer()
guard (playerViewController != nil) else {
return
}
self.present(playerViewController!, animated: true) { [weak self] () -> Void in
guard let self = self else {
return
}
self.playerViewController?.player?.play()
}
}
|
效果图如下:
四.停止视频播放
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| @IBAction func handleStopPlayEvent(sender: AnyObject? ){
guard playerViewController != nil else {
return
}
if ((playerViewController?.parent) != nil) {
playerViewController?.view.removeFromSuperview()
playerViewController?.removeFromParent()
} else if playerViewController != nil && playerViewController!.isModalInPresentation {
playerViewController?.dismiss(animated: (sender != nil ? true:false), completion: nil)
}
playerViewController?.player?.pause()
playerViewController = nil
}
|