1.使用AVAudioPlayer需要先導(dǎo)入AVFoundation系統(tǒng)庫(kù),接下來(lái)隨意找一首歌曲,拉進(jìn)工程的目錄下,我這里用的是薛之謙的一首歌,準(zhǔn)備工作完畢,開(kāi)始寫(xiě)代碼。
2.在ViewController.h做以下操作
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@interface ViewController : UIViewController
{
AVAudioPlayer *avAudioPlay;
UIProgressView *progress;
UISlider *volimSlider;
NSTimer *timer;
}
3.接下來(lái)在.m中完成功能的實(shí)現(xiàn)
3.1按鈕以及進(jìn)度條的創(chuàng)建
- (void)CreatBt
{
//初始化三個(gè)button
NSArray *TitleArr = @[@"開(kāi)始",@"暫停",@"結(jié)束"];
for (int i =0; i<3; i++)
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(150, 180+50*i, 60, 40)];
button.tag = i+1;
[button setTitle:TitleArr[i] forState:UIControlStateNormal];
[button addTarget:self action:@selector(btclick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
//讀取音頻文件
NSURL *url =[[NSBundle mainBundle]URLForResource:@"我好像在哪見(jiàn)過(guò)你.mp3" withExtension:nil];
//添加播放器
avAudioPlay = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
avAudioPlay.delegate = self;
//設(shè)置循環(huán)次數(shù),這里-1代表無(wú)限循環(huán)
avAudioPlay.numberOfLoops = -1 ;
//預(yù)播放
[avAudioPlay prepareToPlay];
//音頻播放進(jìn)度條
progress = [[UIProgressView alloc]initWithFrame:CGRectMake(90, 100, 200, 20)];
[self.view addSubview:progress];
timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(PLAYPROGRESS) userInfo:nil repeats:YES];
//音量控制
volimSlider = [[UISlider alloc]initWithFrame:CGRectMake(90, 120, 200, 20)];
volimSlider.minimumValue = 0.0f;
volimSlider.maximumValue = 10.0f;
volimSlider.value = 5.0f;
[self.view addSubview:volimSlider];
UISwitch *switc =[[UISwitch alloc]initWithFrame:CGRectMake(160, 40, 60, 40)];
[switc addTarget:self action:@selector(onOrOff:) forControlEvents:UIControlEventValueChanged];
switc.on = YES;
[self.view addSubview:switc];
}
3.2按鈕的點(diǎn)擊方法的實(shí)現(xiàn)
- (void)PLAYPROGRESS
{
progress.progress = avAudioPlay.currentTime/avAudioPlay.duration;
}
- (void)onOrOff:(UISwitch *)sender
{
avAudioPlay.volume = sender.on;
}
- (void)volumeChange
{
avAudioPlay.volume = volimSlider.value;
}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
//暫停定時(shí)器
[timer setFireDate:[NSDate distantFuture]];
}
PS:下次打開(kāi)的時(shí)候在ViewWillAppear里實(shí)現(xiàn)定時(shí)器的打開(kāi)
- (void)viewWillAppear:(BOOL)animated
{
[timer setFireDate:[NSDate distantPast]];
}
4.附效果圖:

音樂(lè)播放