刷新控制器中的声音

Sound in Refresh controller

所以,我的 UITableViewController 中有标准刷新控制器,它更新 table 视图中的数据。

 lazy var refresher: UIRefreshControl = {
    let refreshControl = UIRefreshControl()
    refreshControl.tintColor = .lightGray
    refreshControl.addTarget(self, action: #selector(refresh), for: .valueChanged)
    return refreshControl
}()

    @objc func refresh(){
    getMethod()
    self.tableView.reloadData()
    let deadline = DispatchTime.now() + .milliseconds(500)
    DispatchQueue.main.asyncAfter(deadline: deadline){
        self.refresher.endRefreshing()
    }

所以我想添加声音,当用户刷新开始时,以及刷新完成时的声音。与 Facebook 或 Twitter 应用程序中的相同。可以吗?

您可以通过这个简单的解决方案实现您的目标。首先在您的 class 上导入 AVFoundation 并将音频文件添加到您的项目中,方法是将它们拖到 xcode:

然后创建一个播放声音的方法(如果您的文件不是 mp3 则更改 ofType 参数值):

private var player: AVAudioPlayer?

func playSound(soundFileName: String) {
    guard
        let urlPath = Bundle.main.path(forResource: soundFileName, ofType: "mp3")
        else { return }
    
    let url = URL(fileURLWithPath: urlPath)
    
    do {
        player = try AVAudioPlayer(contentsOf: url)
        player?.prepareToPlay()
        player?.play()
    } catch {
        print(error)
    }
}

终于在刷新开始时调用方法

@objc func refresh(){
    playSound(soundFileName: "refresh-start")
    getMethod()
    self.tableView.reloadData()
    let deadline = DispatchTime.now() + .milliseconds(500)
    DispatchQueue.main.asyncAfter(deadline: deadline){
        self.refresher.endRefreshing()
    }
}

以及刷新结束时。