ios - 在播放音频时保持 UIButton 处于选中状态

标签 ios swift uibutton swift3

我在 MainStoryBoard 上用图像创建了按钮。当我按下该按钮时,它会播放音频文件。

我希望该按钮在播放音频文件期间保持突出显示。音频结束后,我希望按钮恢复到默认状态。

我发现audioPlayerDidFinishPlaying(_:successfully:)是一个正确的方法,但是不能解决这个问题。它接近正确的方法吗?如果没有,我该怎么办?

如果有任何建议可以找到解决此问题的方法,我将不胜感激。谢谢。

  let url = Bundle.main.bundleURL.appendingPathComponent("audio1.mp3")

override func viewDidLoad() {
    super.viewDidLoad()

}

func play(url: URL) {
    do {
        try player = AVAudioPlayer(contentsOf:url)
        player.play()

    } catch {
        print(error)
    }
}

@IBAction func pushButton1(sender: UIButton) {
    play(url: url)
}

最佳答案

viewDidLoad 上,您可以在不播放时设置默认属性(例如:我将背景颜色保持为白色),并在播放时将该按钮设为选中状态(例如:我正在使其颜色为绿色)

再次在 audioPlayerDidFinishPlaying 停止播放音频时,将其设置为默认状态(再次从绿色变为白色):

@IBOutlet weak var yourButton: UIButton!
let url = Bundle.main.bundleURL.appendingPathComponent("audio1.mp3")

override func viewDidLoad() {
super.viewDidLoad()

    self.yourButton.backgroundColor = UIColor.white  // default state of button
}

@IBAction func pushButton1(sender: UIButton) {

    play(url: url)
}

func play(url: URL) {

    do {
        try player = AVAudioPlayer(contentsOf:url)
        player.play()
        self.yourButton.backgroundColor = UIColor.green // playing
    } 
   catch {
       print(error)
    }
}

func audioPlayerDidFinishPlaying(player: AVAudioPlayer!, successfully flag: Bool) {

    self.yourButton.backgroundColor = UIColor.white // back to default state
} 

关于ios - 在播放音频时保持 UIButton 处于选中状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42050821/

相关文章:

ios - [NSDateFormatter 类] : message sent to deallocated instance

ios - 如何根据其内容调整 UITextView 的大小?

ios - UIPageControl - 点击按钮重新加载页面

swift - 如何快速删除 UIMenuController 项?

ios - 将字符串属性添加到 Swift 中的 UIButton

iphone - 如何设置 UIButton 类型 RoundedRect 按钮的背景颜色?

ios - AudioKit - 立体声 channel 从输入翻转到输出?

ios - iOS 是否提供内置的文本到语音支持或任何类似 NSSpeechRecognizer 的类?

ios - 如何从 Objective C 项目 App Delegate 调用 Swift?

ios - 文本字段上的位数