使用相同的按钮 Play/Pause 并在 AVFoundation 中循环播放音频

Using same button to Play/Pause and loop audio in AVFoundation

我曾尝试将操作链接到同一个按钮,但这会使按钮完全无法工作。如果我创建一个单独的按钮,我可以使用相同的代码让它工作:

@IBAction func Play(sender: AnyObject) {
    SoundPlayer.play()
}

@IBAction func stop(sender: AnyObject) {        
    SoundPlayer.stop()
}

我还需要循环播放音频。

使用 Nirav 代码:

class ViewController: UIViewController {

   var SoundPlayer:AVAudioPlayer = AVAudioPlayer()

   @IBOutlet var btnPlay: UIButton!
   @IBOutlet var btnStop: UIButton!

   override func viewDidLoad() {
      super.viewDidLoad()

      let FileLocation = NSBundle.mainBundle().pathForResource("Aspirin", ofType: ".mp3")


      do {
          SoundPlayer = try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: FileLocation!))


          try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
          try AVAudioSession.sharedInstance().setActive(true)

      }

      catch {
          print(error)
      }

   }

   override func didReceiveMemoryWarning() {
      super.didReceiveMemoryWarning()
   }

   @IBAction func btnTap(sender: UIButton) {
      if (sender == self.btnPlay) {
      }
      else if (sender == self.btnStop) {
      }
   }
}

1 - 故事板截图

您可以像这样创建 IBOutlet 两个按钮

@IBOutlet var btnPlay: UIButton!

现在将此操作绑定到两个按钮

@IBaction func btnTap(sender: UIButton) {
     if (!sender.selected) {
         SoundPlayer.play()
     }
     else {
         SoundPlayer.stop()
     }
     sender.selected = !sender.selected
}

希望对您有所帮助