我的应用程序中有一个YouTubePlayer(来自here)。我有一个UIViewController(我们称其为MainViewController),其中有一个UITableView完整的视频。每当用户点击一个单元格时,它就会打开另一个UIViewController(我们将其称为DetailViewController),并带有我的自定义xib视图,即playerView。就像我说的,playerView是自定义的xib视图,在该视图中是我的YouTubePlayer。这就是我在DetailViewController中设置playerView的方式

playerContainer.addSubview(playerView)
playerView.frame = CGRect(x: 0, y: 0, width: playerContainer.frame.size.width , height: playerContainer.frame.size.height)
playerView.player.loadVideoID(nowPlayingVideo.id)


好的,这很好。但是...每当用户关闭DetailViewController时,我都希望将playerView移到MainViewController。就像用户可以看到后台播放的内容一样。为此,我在DetailViewController中添加了此代码...

override func viewWillDisappear(_ animated: Bool) {
    nowPlayingView.addSubview(playerView)
    playerView.frame = CGRect(x: 8, y: 8, width: width, height: height)
    playerView.layoutIfNeeded()
}


nowPlayingView是另一个自定义的xib视图,并在较早时添加到应用程序的窗口中。所以这就是我开始遇到问题的地方。这段代码很棒。正确更改了框架并将其添加到nowPlayingView,但是YouTubePlayer中的playerView似乎已重新加载。因此它将暂停播放,显示一个加载图标,然后继续播放。真烦人。这不应该发生,因为视频已经加载到YouTubePlayer中。我很确定只有在更改playerView的帧时才会发生这种情况。有人对如何解决这个问题有任何想法吗?

最佳答案

当视频在加载后继续播放时,是从头开始还是在切换视图之前从中断处继续播放?

10-08 05:28