客官,我先上圖,先別走啊~
我在網上找了許久,無奈搜索能力奇差,沒找到個類似的(不然想拿來抄抄,產品催交作業~),我只能挖一下自己有什麼想法。本質上是一個UICollectionVIew,在每個item上畫多個CAShapeLayer+UIBezierPath曲線,每一段橙色部分就是一個layer。
長按,在插入(替換)layer的過程,一直更新layer.path的x和width。
鬆手,在停止插入layer的過程中,一直記錄下一個layer要開始畫的位置
在模型上我用state屬性來解決UICollectionViewCell的重用問題,state有4種狀態:
0:初始狀態所有cell沒有layer 或 豎線右方cell還沒畫layer,移除layer防重用
1:當前cell在畫layer
2:當前cell產生新的layer
3:豎線左方cell已經畫過了layer
主要代碼在StableLineView.m / ECKaraokeScoreView.m