【发布时间】:2016-03-31 14:21:27
【问题描述】:
我正在使用Player 库,即使用 AVPlayer 和 AVFoundation,这对我的情况来说非常方便。我成功地播放了视频并添加了一个滑块。我将滑块的最小值设置为 0,最大值设置为视频的持续时间..
此时,为了将滑块连接到当前播放时间,我在 StackOverflow 上使用了this answer。我设置了一个协议并使用了addPeriodicTimeObserverForInterval,因此滑块链接到 currentTime 并随着视频成功移动而移动。
现在,这是我的问题。我想做相反的事情 - 当滑块移动时,设置视频的 currentTime(向前,向后)。
我做了一些研究,发现我应该链接slider.value(在我的例子中是sender.value)是seekToTime,但是我不明白如何将它应用到播放器。如何让滑块控制当前时间?
我不确定我是否正确,但据我了解,第一步应该是:
protocol UserSetsTheTimeDelegate
{
func userSetsTheTime(result: Int)
}
class ViewController: UIViewController, PlayerDelegate {
...
func sliderValueDidChange(sender:UISlider!) {
print("value--\(sender.value)")
self.delegate?.userSetsTheTime(sender.value)
}
}
然后添加,我想我应该在 Player.swift 中添加 UserSetsTheTimeDelegate,但我在这里感到困惑。
更新:
我意识到我可以通过在 ViewController 中使用一个实例并在 Player 类中添加一个方法来将数据发送到 Player.swift。这是第一步。但是现在,随着 currentTime 的更新(通过修改滑块)如此之快,它不允许我操纵滑块值。
【问题讨论】:
-
有关如何使用
seekToTime,请参阅以下内容:stackoverflow.com/questions/31711936/…有关如何将滑块值链接到函数(在您的情况下,是实现seekToTime的函数),请参阅我的答案(使用@ 987654334@) 这里:stackoverflow.com/questions/34459115/… -
我应该采取哪些步骤? 1)如我在问题中所示,在 ViewController 中设置协议。 2)添加像
public class Player: UIViewController, UserSetsTheTime {这样的代表(对吗?)3)Put that正如你所说,但是放在哪里?如果您可以添加答案,我可以接受。.. -
对不起,我只能提示你使用上面的线程来实现你当前的时间操纵器,但没有给你和详尽的答案,因此发布为 cmets。也许其他人可以帮助您提供更全面的答案。
-
希望有人发布详细的答案,因为我很困惑将其适应播放器演示。谢谢你的cmets tho
-
@senty 您可以通过保管箱分享您的代码以便我们提供帮助吗?这里没什么好说的了。
标签: ios swift video avfoundation avplayer