UIView 中的 AVPlayer
Posted
技术标签:
【中文标题】UIView 中的 AVPlayer【英文标题】:AVPlayer Inside A UIView 【发布时间】:2017-11-08 19:33:38 【问题描述】:所以我在我的 HomeViewController 上有一个视图,我想在其中播放视频。在 viewDidLoad() 我调用 playVideo() 这是我的代码:
func playVideo()
guard let filePath = Bundle.main.path(forResource: "video", ofType: "mov") else
debugPrint("video.mov not found.")
return
let avPlayer = AVPlayer(url: URL(fileURLWithPath: filePath))
let avPlayerController = AVPlayerViewController()
avPlayerController.player = avPlayer
avPlayerController.view.frame = playerView.bounds
avPlayerController.showsPlaybackControls = false
avPlayerController.player?.play()
playerView.addSubview(avPlayerController.view)
playerView.bringSubview(toFront: QRButton)
我得到的只是黑色背景,没有视频。我究竟做错了什么?我已经尝试解决这个问题一段时间了。
ios:11.2 测试版 Xcode:9.2 测试版
【问题讨论】:
PS:我用 Xcode 9.1 和 iOS 11.1 试过,结果是一样的。 【参考方案1】:尝试使用avPlayer
作为类变量,可能还没开始播放就被释放了。
class ViewController: UIViewController
var avPlayer:AVPlayer?
func playVideo()
guard let filePath = Bundle.main.path(forResource: "video", ofType: "mov") else
debugPrint("video.mov not found.")
return
avPlayer? = AVPlayer(url: URL(fileURLWithPath: filePath))
let avPlayerController = AVPlayerViewController()
avPlayerController.player = avPlayer
avPlayerController.view.frame = playerView.bounds
avPlayerController.showsPlaybackControls = false
avPlayerController.player?.play()
playerView.addSubview(avPlayerController.view)
playerView.bringSubview(toFront: QRButton)
【讨论】:
以上是关于UIView 中的 AVPlayer的主要内容,如果未能解决你的问题,请参考以下文章
检测一个 UIView 是不是在父级中的另一个 UIView 后面
使 UIVIew 看起来像 IB 中的 UIView 的最佳方法?
在 Objective C 中的 UIView 中的命中测试