#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()
{
AVAudioPlayer * _player;
__weak IBOutlet UILabel *timeLabel;
NSTimer * _timer;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSURL *url = [[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:@"tenyear" ofType:@"mp3"]];
_player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
if([_player prepareToPlay]){
[_player play];
}
_timer = [NSTimer scheduledTimerWithTimeInterval:1/60
target:self
selector:@selector(updateProgres)
userInfo:nil
repeats:YES];
_timer.fireDate = [NSDate distantPast];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)volume:(UISlider *)sender {
float value = sender.value;
_player.volume = value;
}
- (IBAction)soundTrack:(UISlider *)sender {
float value = (sender.value - 0.5) * 2;
_player.pan = value;
}
- (IBAction)speed:(UISlider *)sender {
float value = sender.value + 0.5;
_player.rate = value;
}
- (IBAction)play:(UIButton *)sender {
if(_player.playing){
return;
}
[_player play];
}
- (IBAction)pause:(UIButton *)sender {
if(_player.isPlaying){
[_player pause];
}
}
- (IBAction)stop:(UIButton *)sender {
if([_player isPlaying]){
[_player stop];
}
}
- (void)updateProgres{
int current = _player.currentTime;
int duration = _player.duration;
timeLabel.text = [NSString stringWithFormat:@"%02d:%02d/%02d:%02d",current/60,current%60,duration/60,duration%60];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
UI如下
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()
{
AVAudioPlayer * _player;
__weak IBOutlet UILabel *timeLabel;
NSTimer * _timer;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSURL *url = [[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:@"tenyear" ofType:@"mp3"]];
_player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
if([_player prepareToPlay]){
[_player play];
}
_timer = [NSTimer scheduledTimerWithTimeInterval:1/60
target:self
selector:@selector(updateProgres)
userInfo:nil
repeats:YES];
_timer.fireDate = [NSDate distantPast];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)volume:(UISlider *)sender {
float value = sender.value;
_player.volume = value;
}
- (IBAction)soundTrack:(UISlider *)sender {
float value = (sender.value - 0.5) * 2;
_player.pan = value;
}
- (IBAction)speed:(UISlider *)sender {
float value = sender.value + 0.5;
_player.rate = value;
}
- (IBAction)play:(UIButton *)sender {
if(_player.playing){
return;
}
[_player play];
}
- (IBAction)pause:(UIButton *)sender {
if(_player.isPlaying){
[_player pause];
}
}
- (IBAction)stop:(UIButton *)sender {
if([_player isPlaying]){
[_player stop];
}
}
- (void)updateProgres{
int current = _player.currentTime;
int duration = _player.duration;
timeLabel.text = [NSString stringWithFormat:@"%02d:%02d/%02d:%02d",current/60,current%60,duration/60,duration%60];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end