gpt4 book ai didi

ios - 如何使用 UIBarbuttonItem 切换播放和暂停

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:46 25 4
gpt4 key购买 nike

谁能帮帮我。我搜索了我的问题,但仍然找不到解决方案,我发现的所有内容都没有在 swift 3 中格式化。我试图从 UIBarButtonItem 切换播放和暂停。每当单击播放按钮时,我希望它播放文件,同时将 UIBarButtonItem 更改为暂停,反之亦然。

顺便说一句,我已经将导航 Controller 从编辑器嵌入到我的主视图 Controller 中。

这是我的代码片段。

import UIKit
import AVFoundation

class ViewController: UIViewController {
@IBOutlet weak var pausePlayBtn: UIBarButtonItem!
var audioPlayer = AVAudioPlayer()

override func viewDidLoad() {
super.viewDidLoad()

prepareMusic()
}

func prepareMusic() {
let path = Bundle.main.path(forResource: "SomeFileName", ofType: "TypeOfFile")!
do {
audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))
audioPlayer.prepareToPlay()
} catch let err as NSError {
print(err)
}
}

@IBAction func togglePausePlay(sender: UIBarButtonItem) {
if !audioPlayer.isPlaying {
audioPlayer.play()
} else {
audioPlayer.stop()
}
}
}

我尝试了以下方法。

首先,我开始创建播放按钮和暂停按钮,并将它们添加到我的 togglePausePlay 函数中。

let playBtn = UIBarButtonItem(barButtonSystemItem: .play, target: self, action: nil)
let pauseBtn = UIBarButtonItem(barButtonSystemItem: .pause, target: self, action: nil)

@IBAction func togglePausePlay(sender: UIBarButtonItem) {
if !audioPlayer.isPlaying {
audioPlayer.play()
pausePlayBtn = playBtn
} else {
audioPlayer.stop()
pausePlayBtn = pauseBtn
}
}

我尝试的第二件事是这个。

@IBAction func togglePausePlay(sender: UIBarButtonItem) {
if !audioPlayer.isPlaying {
audioPlayer.play()
self.navigationController?.navigationBar.topItem?.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .play, target: self, action: nil)
} else {
audioPlayer.stop()
self.navigationController?.navigationBar.topItem?.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .pause, target: self, action: nil)
}
}

这在应用程序启动时起作用,我会第一次单击该按钮,一切正常,按钮将变为暂停,文件将开始。但是,当我尝试再次单击它时,没有任何反应,按钮保持暂停状态,文件仍在播放,直到我停止项目。

如有任何帮助,我们将不胜感激。 :)

最佳答案

我想出了一个适合你的解决方案,它对我很有效。

这是我试过的代码及其工作原理。按钮项在点击时发生变化。

import UIKit

class ViewController: UIViewController {

var playBtn = UIBarButtonItem()
var pauseBtn = UIBarButtonItem()

@IBOutlet var labelMusicState: UILabel!

override func viewDidLoad()
{
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.playBtn = UIBarButtonItem(barButtonSystemItem: .play , target: self, action: #selector(playBtnAction(sender:)))
self.pauseBtn = UIBarButtonItem(barButtonSystemItem: .pause , target: self, action: #selector(pauseBtnAction(sender:)))

self.navigationItem.rightBarButtonItem = playBtn
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func playBtnAction(sender: UIBarButtonItem)
{
self.navigationItem.rightBarButtonItem = pauseBtn
self.labelMusicState.text = "Music is Playing"
}

func pauseBtnAction(sender: UIBarButtonItem)
{
self.navigationItem.rightBarButtonItem = playBtn
self.labelMusicState.text = "Music Not Playing"
}

}

enter image description here

enter image description here

关于ios - 如何使用 UIBarbuttonItem 切换播放和暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42868150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com