Swift   发布时间:2022-04-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift:音频滑块控制大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
问题:

当我转向持有按钮和滑块的视图控制器时,它会崩溃应用程序,并在slider.maximumValue = Float(audioPlayer.duration)行上提供线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x38).在视图控制器中,我有一个播放/暂停按钮,一个停止按钮和一个控制音频播放位置的滑块.

码:

import UIKit
import AVFoundation

class AgnesAudioViewController: UIViewController {

var audioPlayer = AVAudioPlayer()
var toggleState = 1
@IBOutlet var slider: UiSlider!

@IBACtion func done(sender: AnyObject) {
    dismissviewControllerAnimated(true,completion: nil)
}

@IBACtion func play(sender: AnyObject) {
    audioPlayer.play()
}

@IBACtion func pause(sender: AnyObject) {
    audioPlayer.pause()
}

@IBACtion func stop(sender: AnyObject) {
    audioPlayer.stop()
}

@IBACtion func scrubAudio(sender: AnyObject) {
    audioPlayer.stop()
    audioPlayer.currentTime = NSTimeInterval(slider.value)
    audioPlayer.prepareToPlay()
    audioPlayer.play()
}

@IBACtion func playPauseButton(sender: AnyObject) {
    var playBtn = sender as! UIButton
    if toggleState == 1 {
        audioPlayer.play()
        toggleState = 2
        playBtn.setImage(UIImage(named:"pause.png"),forState:UIControlState.Normal)
    } else {
        audioPlayer.pause()
        toggleState = 1
        playBtn.setImage(UIImage(named:"play.png"),forState:UIControlState.Normal)
    }
}

override func viewDidLoad() {
    super.viewDidLoad()

    var timer = NSTimer.scheduledTimerWithTimeInterval(0.01,target: self,SELEctor: SELEctor("updateSlider"),userInfo: nil,repeats: truE)

    slider.maximumValue = Float(audioPlayer.duration)

    let pathString = NSBundle.mainBundle().pathForresource("agnes",ofType: "mp2")

    if let pathString = pathString {

        let pathURL = NSURL(fileURLWithPath: pathString)

        do {

            try audioPlayer = AVAudioPlayer(contentsOfURL: pathURL)

        } catch {

            print("error")
        }


    }

}

func updateSlider() {
    slider.value = Float(audioPlayer.currentTimE)
}
}

解决方法

解决了这个问题:

import UIKit
import AVFoundation

class AgnesAudioViewController: UIViewController {

var audioPlayer = AVAudioPlayer()
var toggleState = 1
@IBOutlet var slider: UiSlider!
@IBOutlet var playedTime: UILabel!

@IBACtion func done(sender: AnyObject) {
    dismissviewControllerAnimated(true,completion: nil)
    audioPlayer.stop()
}

@IBACtion func play(sender: AnyObject) {
    audioPlayer.play()
    updatetiR_338_11845@e()
}

@IBACtion func pause(sender: AnyObject) {
    audioPlayer.pause()
    updatetiR_338_11845@e()
}

@IBACtion func stop(sender: AnyObject) {
    audioPlayer.stop()
    updatetiR_338_11845@e()
}

@IBACtion func scrubAudio(sender: AnyObject) {
    audioPlayer.stop()
    audioPlayer.currentTime = NSTimeInterval(slider.value)
    audioPlayer.prepareToPlay()
    audioPlayer.play()
}

func updatetiR_338_11845@e() {
    var currentTime = Int(audioPlayer.currentTimE)
    var duration = Int(audioPlayer.duration)
    var @R_201_10586@l = currentTime - duration
    var @R_201_10586@lString = String(@R_201_10586@l)

    var minutes = currentTime/60
    var seconds = currentTime - minutes / 60

    playedTime.text = NSString(format: "%02d:%02d",minutes,seconds) as String
}

@IBACtion func playPauseButton(sender: AnyObject) {
    //1 = play
    //2 = pausw
    var playBtn = sender as! UIButton
    if toggleState == 1 {
        audioPlayer.play()
        toggleState = 2
        playBtn.setImage(UIImage(named:"pause2.png"),forState:UIControlState.Normal)
    } else {
        audioPlayer.pause()
        toggleState = 1
        playBtn.setImage(UIImage(named:"play2.png"),forState:UIControlState.Normal)
    }
}

override func viewDidLoad() {
    super.viewDidLoad()

    var updatetiR_338_11845@er = NSTimer.scheduledTimerWithTimeInterval(0.01,SELEctor: SELEctor("updatetiR_338_11845@e"),repeats: truE)
    var timer = NSTimer.scheduledTimerWithTimeInterval(0.01,repeats: truE)

    let pathString = NSBundle.mainBundle().pathForresource("agnes",ofType: "mp3")

    if let pathString = pathString {

        let pathURL = NSURL(fileURLWithPath: pathString)

        do {

            try audioPlayer = AVAudioPlayer(contentsOfURL: pathURL)

        } catch {

            print("error")
        }


    }

    slider.maximumValue = Float(audioPlayer.duration)
}

func updateSlider() {
    slider.value = Float(audioPlayer.currentTimE)
    }
}

大佬总结

以上是大佬教程为你收集整理的swift:音频滑块控制全部内容,希望文章能够帮你解决swift:音频滑块控制所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。