最近項(xiàng)目里用到了類似微信的錄音控件,我把里面和業(yè)務(wù)邏輯無(wú)關(guān)的視圖部分的代碼抽出來(lái)做了個(gè) Demo,有類似需求的可以參考下扭勉,希望對(duì)你有用~
功能和微信高度類似,主要有苛聘,
- 上滑取消
- 最后10s展示倒計(jì)時(shí)
- 錄制時(shí)長(zhǎng)太小時(shí)展示 Toast
最終效果如下圖所示
實(shí)現(xiàn)思路就是維護(hù)各種狀態(tài)涂炎,然后刷新對(duì)應(yīng)狀態(tài)的 UI,比較有意思的是音量動(dòng)畫(huà)的實(shí)現(xiàn)设哗,用了一個(gè) ShapeLayer
作為 mask
來(lái)做動(dòng)畫(huà)唱捣,具體實(shí)現(xiàn)可以看 BBVoiceRecordPowerAnimationView
這個(gè)類。 mask
主要就是用來(lái)裁剪視圖网梢,比較類似 PS 里的圖層蒙版震缭,mask
再配合 UIBezierPath
就能裁剪出任意形狀的視圖了,后面有機(jī)會(huì)再詳細(xì)說(shuō)明下战虏。
代碼放到 GitHub 上了拣宰,地址在這兒。感興趣的可以下下來(lái)運(yùn)行看看效果烦感,實(shí)現(xiàn)不是很優(yōu)雅:)有任何問(wèn)題都可以給我留言巡社,enjoy~
歡迎大家關(guān)注我們團(tuán)隊(duì)的公眾號(hào),不定期分享各類技術(shù)干貨