最近项目里用到了类似微信的录音控件,我把里面和业务逻辑无关的视图部分的代码抽出来做了个 Demo,有类似需求的可以参考下,希望对你有用~
功能和微信高度类似,主要有,
- 上滑取消
- 最后10s展示倒计时
- 录制时长太小时展示 Toast
最终效果如下图所示
实现思路就是维护各种状态,然后刷新对应状态的 UI,比较有意思的是音量动画的实现,用了一个 ShapeLayer
作为 mask
来做动画,具体实现可以看 BBVoiceRecordPowerAnimationView
这个类。 mask
主要就是用来裁剪视图,比较类似 PS 里的图层蒙版,mask
再配合 UIBezierPath
就能裁剪出任意形状的视图了,后面有机会再详细说明下。
代码放到 GitHub 上了,地址在这儿。感兴趣的可以下下来运行看看效果,实现不是很优雅:)有任何问题都可以给我留言,enjoy~
欢迎大家关注我们团队的公众号,不定期分享各类技术干货