前言:该系列合适ios开发者萌新
作为一只有梦想的新手,一定会迫不及待的开发些小项目来练手,学习顺便还高涨自己的自信。却在打开别人的开源项目那一刻变成一条失去了梦想的咸鱼。因看到不熟悉的项目而措手不及,无从下手,无头苍蝇。我的任务就是带你切入到项目到下一步下一步下一步直到盘出。
附上项目源码
过程搜索方式如图:
Step 0 .准备工作
0.1 创建相关文件目录
0.2 使用cocoapods安装'SnapKit'自动布局框架
0.3 将需要素材倒入项目
Step 1 .搭建界面
1.1 懒加载界面需要的控件属性
1.2 设置控件自动布局
1.3 对专辑视图圆角化
1.4 对歌手背景视图的毛玻璃化处理
Step2 .加载音乐数据(加载plist文件)
2.1 根据plist文件创建一首歌的模型MusicModel
2.2 创建一首歌的模型的ViewModel
2.3 创建储存音乐模型列表MusicListViewModel
2.4 加载plist文件获取模型数组
Step 3 .对按钮的处理,添加相应监听事件(先考虑能播放音乐)
3.1 添加'播放&暂停'按钮监听事件
3.2 准备 解析曲目的工具类MusicTools(引入Fundation框架,需单例来调用音频,通过文件名加载播放音频)
3.3 设置默认播放曲目
3.4 实现播放与暂停方法
3.5 上一首,下一首按钮方法实现
3.6 添加专辑视图旋转动画(播放旋转,暂停停止)
Step 4.界面信息完善
4.1 通过MusicTools播放工具中AVAudioPlayer获取曲目总时长
4.2 通过MusicTools播放工具中AVAudioPlayer获取播放进度时间
4.3 修改AVAudioPlayer.currentTime自定义播放进度
4.4 时间格式转转化后赋值给Label
Step 5.Slider时间条处理
5.1 监听进度条多种状态事件(touchUpInside获取实时播放比例,touchUpOutside获取实时播放比例,touchDown移除计时器)
5.2 当停止滑动进度条时重置播放进度
5.3 播放音乐时打开定时器(作用以实时获取播放比例和播放进度时间值给进度条和进度文本)
5.4 合适位置移除定时器
Step 6.添加一个scrollView,显示歌词用
6.1 懒加载自定义LrcScrollView
6.2 创建解析歌词文件工具LrcTools(加载lrc文件转化为字符串),和每行歌词的模型LrclineModel(时间和对应行歌词)
6.3 执行解析歌词为歌词模型数组的函数
6.4 LrcScrollView内创建tableView
6.5 创建自定义LrcViewCell,显示行歌词
Step 7.显示歌词的处理
7.1 tableView添加获取当前播放一首音乐进度时间属性
7.2 计算当前音乐播放进度时间的歌词所在的模型数组下标,对当前下标的cell内容变色处理
7.3 添加定时器获取实时歌曲播放进度时间,由TabelView处理
7.4 通过UIScrollViewDelegate滑动时背景alpha透明