首页 > 解决方案 > 更改框架时视图重新加载

问题描述

我的应用程序中有一个YouTubePlayer(从这里开始)。我有一个UIViewController(我们称之为MainViewController),里面有UITableView很多视频。每当用户点击一个单元格时,它会打开另一个UIViewController(我们称之为 this DetailViewController),我的自定义 xib 视图名为playerView. 就像我说的,playerView是一个自定义的 xib 视图,在那个视图中是我的YouTubePlayer. 这就是我在我的DetailViewController

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 视图,之前已添加到应用程序的窗口中。所以这就是我开始遇到问题的地方。这段代码很好用。YouTubePlayer框架已正确更改并已添加到nowPlayingView,但是playerView似乎重新加载。因此它会暂停播放,显示加载图标,然后继续播放。这很烦人。这不应该发生,因为视频已经加载到YouTubePlayer. 我很确定只有在我更改playerView. 有没有人对如何解决这个问题有任何想法?

标签: iosswift

解决方案


当视频在加载后恢复播放时,视频是从头开始还是在更改视图之前从中断的地方继续播放?


推荐阅读