音乐播放器界面控件

异常处理:

用" try! "可以忽略异常

enum MyError: ErrorProtocol {
      case FirstError
      case SecondError
}
func testError(a: Int) throws {
        guard a > 0 else {
            throw MyError.FirstError
        }    
        print("testError")
}
do {
            try testError(1)
        }
catch MyError.FirstError {
            
}
catch MyError.SecondError {
            
}
catch {
            
        }

设置播放速率:

audioPlayer?.enableRate = true
audioPlayer?.rate = 10 
import UIKit
import AVFoundation

class ViewController: UIViewController, AVAudioPlayerDelegate {
    @IBOutlet weak var uiPlayButton: UIButton!
    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var progress: UIProgressView!
    var audioPlayer: AVAudioPlayer?
    var timer: NSTimer?
    var image_play = UIImage(named: "cm2_rcd_btn_play_prs")
    var image_pause = UIImage(named: "cm2_rcd_btn_pause")
    var log = false
    let url = [
               NSBundle.mainBundle().URLForResource("南征北战 - 我的天空", withExtension: "mp3"),
               NSBundle.mainBundle().URLForResource("BANG BANG BANG", withExtension: "mp3"),
               NSBundle.mainBundle().URLForResource("韩安旭 - 多幸运", withExtension: "mp3"),
               NSBundle.mainBundle().URLForResource("Jam - 七月上", withExtension: "mp3"),
               NSBundle.mainBundle().URLForResource("IF YOU", withExtension: "mp3")
               ]
    let name = ["南征北战 - 我的天空", "BANG BANG BANG", "韩安旭 - 多幸运", "Jam - 七月上", "IF YOU"]
    var max_i:Int!
    var i = 0
    
    override func viewDidLoad() {
        super.viewDidLoad()
        max_i = url.count
        changMusic()
        audioPlayer?.prepareToPlay()
        timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(didTime(_:)), userInfo: nil, repeats: true)
    }
    
    func changMusic(){
        label.text = name[i]
        do{
            try audioPlayer = AVAudioPlayer(contentsOfURL: url[i]!)
        }
        catch{
        
        }
        if log{
            Play()
        }
    }
    func Play(){
        audioPlayer?.play()
    }
    func Pause(){
        // timer.invalidate()  停止计时器
        audioPlayer?.pause()
    }
    func didTime(timer: NSTimer){
        progress.progress = Float((audioPlayer?.currentTime)!/(audioPlayer?.duration)!)
    }
    
    @IBAction func playButton(sender: UIButton) {
        if log{
            Pause()
            uiPlayButton.setImage(image_play, forState: .Normal)
            log = false
        }else{
            Play()
            uiPlayButton.setImage(image_pause, forState: .Normal)
            log = true
        }
    }
    @IBAction func lastButton(sender: UIButton) {
        if i <= 0{
            i = max_i - 1
        }else{
            i = i - 1
        }
        changMusic()
    }
    @IBAction func nextButton(sender: UIButton) {
        if i < max_i-1{
            i = i + 1
        }else{
            i = 0
        }
        changMusic()
    }
        
    func audioPlayerDidFinishPlaying(player: AVAudioPlayer, successfully flag: Bool){
        print("播放完成")
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容