我正在使用apple tv。我的UIViewController里面有一个UIView。我正在添加AVPlayerViewController作为我的UIView的子视图。 UIView的框架是CGRect(x:50,y:50,宽度:1344,高度:756)。我将AVPlayerViewController框架设置为等于我的UIView的框架。
问题是视频在其框架中播放正常,但暂停,播放,转发等控件隐藏起来并且无法正常工作。但是当我将帧设置为CGRect(x:0,y:0,宽度:1920,高度:1080)时,控件是可见的并且正常工作。
我的代码如下:
let url = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
let item = AVPlayerItem(url: url!)
self.player = AVPlayer(playerItem: item)
self.avplayerController = AVPlayerViewController()
self.avplayerController.player = self.player
self.avplayerController.view.frame = videoPreviewLayer.frame
self.avplayerController.showsPlaybackControls = true
self.avplayerController.requiresLinearPlayback = true
self.addChildViewController(self.avplayerController)
self.view.addSubview(self.avplayerController.view)
self.avpController.player?.play()
请帮忙。
答案 0 :(得分:5)
这是预期的行为:
AVPlayerViewController的设计使得在全屏时, 完整的播放体验(擦洗,信息面板访问等)都是 可用。当在一个小于全屏的空间时,假设是 它只是屏幕上几个互动元素之一,而且 因此,视图不应吸收所有触摸表面事件作为传输 控制。
您可以在此帖子中详细了解此信息:https://forums.developer.apple.com/thread/19526
答案 1 :(得分:2)
我设法使用以下代码解决了这个问题:
let player = AVPlayer(url: self.videoUrl!)
let avPlayerController = AVPlayerViewController()
avPlayerController.player = player;
avPlayerController.view.frame = self.videoPlayView.bounds;
self.addChildViewController(avPlayerController)
self.videoPlayView.addSubview(avPlayerController.view);
现在AVPlayerViewController显示大多数播放控件,即使是作为uiview的子节点。
提供者: https://www.techotopia.com/index.php/IOS_8_Video_Playback_using_AVPlayer_and_AVPlayerViewController