2015-07-16 1 views
0

Когда я открываю представление, музыка начинает воспроизводиться с использованием AVFoundation, а затем, когда она заканчивается, как мне создать действие при его остановке? Поэтому, когда музыкальный файл заканчивается, я хочу, чтобы кнопка «Пауза» включалась в «Play». Я уже знаю, как программно изменить текст, используя btnPausePlay.setTitle("Pause", forState: UIControlState.Normal), но как создать функцию, когда музыка перестает играть?(iOS) Действие при остановке музыкального файла

Примечание: Я использую swift

+0

Я думаю, вы ищете, как это событие: http://stackoverflow.com/questions/9821195/what-should-i-do-to-call-audioplayerdidfinishplaying В вашем случае вы также должны реализовать 'audioPlayerDecodeErrorDidOccur' мероприятие. Для получения дополнительной информации перейдите по ссылке: https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerDelegateProtocolReference/#//apple_ref/occ/intfm/AVAudioPlayerDelegate/audioPlayerDecodeErrorDidOccur:error: – Mrunal

ответ

1

Вы можете использовать делегат функции для этого и вот ваш полный код:

import UIKit 
import AVFoundation 

class ViewController: UIViewController, AVAudioPlayerDelegate { 

    var player = AVAudioPlayer() 

    @IBOutlet weak var musicSlider: UISlider! 
    @IBOutlet weak var btnPausePlay: UIButton! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     musicSlider.value = 0.0 
     music() 
    } 

    func updateMusicSlider(){ 

     musicSlider.value = Float(player.currentTime) 
    } 

    @IBAction func sliderAction(sender: AnyObject) { 

     player.stop() 
     player.currentTime = NSTimeInterval(musicSlider.value) 
     player.play() 
    } 

    func music(){ 

     var audioPath = NSBundle.mainBundle().pathForResource("1", ofType: "mp3")! 
     var error : NSError? = nil 
     player = AVAudioPlayer(contentsOfURL: NSURL(string: audioPath), error: &error) 
     musicSlider.maximumValue = Float(player.duration) 
     var timer = NSTimer.scheduledTimerWithTimeInterval(0.05, target: self, selector: Selector("updateMusicSlider"), userInfo: nil, repeats: true) 
     player.delegate = self 
     if error == nil { 
      player.delegate = self 
      player.prepareToPlay() 
      player.play() 
     } 
    } 
    //This delegate method will call when your player finish playing. 
    func audioPlayerDidFinishPlaying(player: AVAudioPlayer!, successfully flag: Bool) 
    { 
     btnPausePlay.setTitle("Play", forState: .Normal) 
    } 

} 

И HERE Ваш пример проекта для получения дополнительной информации.

 Смежные вопросы

  • Нет связанных вопросов^_^