在播放音频时保持 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 将冻结