最近專案裡用到了類似微信的錄音控制元件,我把裡面和業務邏輯無關的檢視部分的程式碼抽出來做了個 Demo,有類似需求的可以參考下,希望對你有用~
功能和微信高度類似,主要有,
- 上滑取消
- 最後10s展示倒數計時
- 錄製時長太小時展示 Toast
最終效果如下圖所示
實現思路就是維護各種狀態,然後重新整理對應狀態的 UI,比較有意思的是音量動畫的實現,用了一個 ShapeLayer
作為 mask
來做動畫,具體實現可以看 BBVoiceRecordPowerAnimationView
這個類。 mask
主要就是用來裁剪檢視,比較類似 PS 裡的圖層蒙版,mask
再配合 UIBezierPath
就能裁剪出任意形狀的檢視了,後面有機會再詳細說明下。
程式碼放到 GitHub 上了,地址在這兒。感興趣的可以下下來執行看看效果,實現不是很優雅:)有任何問題都可以給我留言,enjoy~
最後做個推廣,歡迎關注公眾號 MrPeakTech,我從這裡學到很多,推薦給大家,共同進步~