Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在播放音频时保持UIButton处于选中状态_Ios_Swift_Uibutton_Swift3 - Fatal编程技术网

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

Ios 在播放音频时保持UIButton处于选中状态,ios,swift,uibutton,swift3,Ios,Swift,Uibutton,Swift3,我在主板上创建了带有图像的按钮。当我按下那个按钮时,它播放音频文件 我希望该按钮在音频文件播放期间保持高亮显示。音频结束后,我希望按钮返回其默认状态 我发现audioplayerdfinishplaying(:successfully:)是一种正确的方法,但不能解决这个问题。这接近正确的方法吗?如果没有,我该怎么做 我非常感谢能找到这个问题解决办法的任何建议。谢谢 let url = Bundle.main.bundleURL.appendingPathComponent("audio1.m

我在主板上创建了带有图像的按钮。当我按下那个按钮时,它播放音频文件

我希望该按钮在音频文件播放期间保持高亮显示。音频结束后,我希望按钮返回其默认状态

我发现
audioplayerdfinishplaying(: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中,当它停止播放音频时,将其设置为默认状态(再次由绿色变为白色):


我觉得你的方法不错。你面临的问题是什么?我刚才给你举了一个背景色的例子,你可以在那里设置你所需的属性,如边框颜色、阴影或其他可以使其高亮度的东西。因此,不要更改颜色,而是更改按钮属性Tanks这是我需要的方法,但当我在上面编辑按钮颜色时,按钮颜色不会返回到默认状态您是否通过在AudioPlayerIDFinish方法中放置断点来检查它是否正在调用?
@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
}