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

Posted

技术标签:

【中文标题】在播放音频时保持 UIButton 处于选中状态【英文标题】:Keeping a UIButton selected while audio is playing 【发布时间】:2017-02-05 10:11:54 【问题描述】:

我在 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)

【问题讨论】:

你的方法对我来说听起来不错。您面临的问题是什么? 【参考方案1】:

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
 

【讨论】:

背景颜色我只是给你举个例子,你可以在那里设置你需要的属性,比如边框颜色、阴影或使它突出的东西。因此,不要更改颜色,而是更改按钮属性 谢谢,这是我需要的方法,但是当我在上面编辑时,按钮颜色不会恢复到默认状态 您是否通过在 audioPlayerDidFinish 方法中放置断点来检查它是否正在调用?

以上是关于在播放音频时保持 UIButton 处于选中状态的主要内容,如果未能解决你的问题,请参考以下文章

向下滚动时如何使 UIButton 在表格视图中保持选中状态

MPNowPlayingInfoCenter 在通过播放音频时始终处于“正在播放”状态

如果背景音频处于活动状态,MPMoviePlayerController 将冻结

页面刷新JavaScript,Spring Boot时如何保持复选框处于选中状态?

提供禁用音频自动播放的选项

UIButton:为选中状态设置图片