每周五公司例行会议, 今天没学习Swift就给大家贴一些之前写的demo得了, 今天主要做一个简单的音乐播放器.先看下效果图
先主要说下功能, 进度条, 以及一个控制音量的slider, 还有一个btn控制播放以及暂停, 以及上面的一个时间显示的label. 下面直接上代码了.
//这里给btn设置两种状态的图片, 点击btn之后, btn会自动换图 [self.playOrPauseBtn setImage:[UIImage imageNamed:@"play.jpg"] forState:UIControlStateNormal]; [self.playOrPauseBtn setImage:[UIImage imageNamed:@"pause.jpg"] forState:UIControlStateSelected]; [self.playOrPauseBtn setSelected:NO];
接下来是配置播放器了
//配置播放器 NSBundle *bundle = [NSBundle mainBundle]; NSString * path = [bundle pathForResource:@"Error" ofType:@"mp3"]; NSURL * musicURL = [NSURL fileURLWithPath:path]; NSError *error; self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:&error]; if (self.player == nil) { NSLog(@"error = %@", [error localizedDescription]); } //设置时间,每0.5s调用一次绑定的方法 self.timer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(updateTime) userInfo:nil repeats:YES];
接下来是方法的实现了.
//更新时间 -(void) updateTime { //获取音频的总时间 NSTimeInterval totalTimer = self.player.duration; //获取音频的当前时间 NSTimeInterval currentTime = self.player.currentTime; //根据时间比设置进度条的进度 self.ScheduleProgress.progress = (currentTime/totalTimer); //把秒转换成分钟 NSTimeInterval currentM = currentTime/60; currentTime = (int)currentTime%60; NSTimeInterval totalM = totalTimer/60; totalTimer = (int)totalTimer%60; //把时间显示在lable上 NSString *timeString = [NSString stringWithFormat:@"%02.0f:%02.0f|%02.0f:%02.0f",currentM, currentTime, totalM,totalTimer]; self.CountDownLabel.text = timeString; }
这是btn
//btn点击的设置 - (IBAction)playOrPauseBtnClicker:(id)sender { self.playOrPauseBtn.selected = !self.playOrPauseBtn.selected; if (self.playOrPauseBtn.selected) { [self.player play]; } else { [self.player pause]; } }
- (IBAction)changeVolume:(id)sender { self.player.volume = self.VolumeSlider.value;//这是Slider改变音量的实现 }
这里我是通过xib设置的一些初始值, 而且我这里没有设置上一首, 下一首, 原理很简单就是设置一个数组, 播放的时候记录下当前的index, 下一首就index++, 上一首同理, 这里没有写出可以自己试一下.
好, 今天就写的简单一点.我去开会了...