如何在其他视图中使用 Swift 中的 AVPlayer 暂停和播放音乐

Posted

技术标签:

【中文标题】如何在其他视图中使用 Swift 中的 AVPlayer 暂停和播放音乐【英文标题】:How to pause and play music with AVPlayer in Swift in other view 【发布时间】:2019-01-11 12:38:02 【问题描述】:

我有 2 个视图。一个带有音乐列表和一个“音乐播放器视图”。我正在使用下面的代码在“音乐播放器视图”中暂停和播放音乐。

我还想在音乐列表的第一个视图中暂停和播放音乐。但是当我将下面的代码添加到第一个视图并按下暂停/播放按钮时,音乐会暂停,然后直接开始播放。

override func pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) 
    presses.forEach  press in
        switch press.type 
        case .playPause:
            if player.isPlaying 
                player.pause()
            
            else 
                player.play()
            
        default: break
        
    


如果音乐正在播放,我希望音乐暂停,如果没有播放,则在两种视图中播放。

【问题讨论】:

显示您在哪里声明您的avplayer 对象? 我正在使用 FRadioPlayer,它是 AVPlayer 的包装器来处理互联网广播播放。我只是使用这个: let player = FRadioPlayer.shared 在“音乐播放器视图”中的 viewdidload 中: player.delegate = self 和 player.radioURL = URL(string: radiostationUrl)! 【参考方案1】:

不要循环遍历所有的印刷机,只需像下面这样进行第一次触摸 `

override func pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) 
 guard let press = presses.first else  return 
        switch press.type 
        case .playPause:
            if player.isPlaying 
                player.pause()
            
            else 
                player.play()
            
        default: break
        
    


但是对于您的第二个问题,您需要提供更多信息。

【讨论】:

代码运行良好。问题是当我转到“播放音乐视图”并按暂停音乐暂停然后直接开始时。但是当我回到开始视图时,暂停/播放按钮在两个视图中都可以正常工作。这是我第一次按暂停/播放按钮时的问题。

以上是关于如何在其他视图中使用 Swift 中的 AVPlayer 暂停和播放音乐的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中访问多个视图控制器中的数据?

如何使用 swift 将相同的背景图像添加到我的 ios 应用程序中的所有视图?

UIView 中的 AVPlayer 视图缺少控件

如何在Swift中移动容器视图

如何在 swift 中的 tableview 中的 didselectrow 方法中点击内容视图

如何使用 Swift 在静态表视图底部添加动态表视图?