问题描述
因此,我的UITableViewController中具有标准的刷新控制器,该控制器可更新表视图中的数据。
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应用程序中的相同。有可能做到吗?
解决方法
您可以通过此简单的解决方案实现目标。首先在您的课程上导入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()
}
}
以及刷新结束时。