音频停止快速播放后,如何自动更改按钮的背景图像?

时间:2019-07-17 08:54:26

标签: ios swift

我正在使用 xcode 10.2.1 开发语音记录应用程序... ...录制音频后,音频将以表格视图显示。在每个单元格内都有一个播放按钮,按下该按钮应切换为暂停。音频播放完毕后,应重新播放。如何迅速实现这一目标?

我在堆栈上尝试了许多答案,但是没有一个满足我的要求。

func btnPlayPressed(index: Int) {
        let audio = self.audios[index]

        if audio.isPlaying {
            AudioManager.sharedInstance.stopSound()
            self.audios[index].isPlaying = false
        } else {
            AudioManager.sharedInstance.playSound(fileName: audio.fileName)
            self.audios[index].isPlaying = true
        }
    }

2 个答案:

答案 0 :(得分:0)

您应该使用NSNotificationCenter并在音频播放完毕后收听。在该功能中,您必须更改按钮的图像。您在使用 Caused by: java.lang.NoSuchMethodError: org.jetbrains.kotlin.resolve.diagnostics.DiagnosticSuppressor$Companion.getEP_NAME()Lcom/intellij/openapi/extensions/ExtensionPointName; at com.android.tools.lint.LintCoreApplicationEnvironment.registerAppExtensionPoints(LintCoreApplicationEnvironment.java:145) at com.android.tools.lint.LintCoreApplicationEnvironment.createApplicationEnvironment(LintCoreApplicationEnvironment.java:94) at com.android.tools.lint.LintCoreApplicationEnvironment.get(LintCoreApplicationEnvironment.java:71) at com.android.tools.lint.LintCliClient.initializeProjects(LintCliClient.java:971) at com.android.tools.lint.client.api.LintClient.performInitializeProjects$lint_api(LintClient.kt:774) at com.android.tools.lint.client.api.LintDriver.analyze(LintDriver.kt:306) at com.android.tools.lint.LintCliClient.run(LintCliClient.java:179) at com.android.tools.lint.gradle.LintGradleClient.run(LintGradleClient.java:254) at com.skateboard.hecatoncheires.checktools.IncrementLintGradleExecution.runLint(IncrementLintGradleExecution.java:250) at com.skateboard.hecatoncheires.checktools.IncrementLintGradleExecution.lintAllVariants(IncrementLintGradleExecution.java:391) at com.skateboard.hecatoncheires.checktools.IncrementLintGradleExecution.analyze(IncrementLintGradleExecution.java:85) ... 59 more 吗?

答案 1 :(得分:0)

您可以扩展AVAudioPlayerDelegate并覆盖下面的功能。然后,此功能将触发您了解音频已结束的情况。

func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
    print("Finish")
}