朋友說想要一個點擊變成帶缺口圓圈旋轉的按鈕,用來實現類似網絡請求轉菊花的等待效果。從網上了解了一下,決定使用CAShapeLayer來實現效果(因為我覺得可以很方便的畫出帶缺口的圓)。
整體功能我封裝成一個button,使用方法和普通button一樣。在需要停止動畫的地方加上activityIndicatorViewShow:方法(傳NO是取消動畫,YES是開始動畫)。
以下是核心實現代碼:
在這個方法里根據傳入參數判斷開始/取消動畫。在開始動畫的實現里,為了只顯示弧線,將button本來的一些屬性全部清除,并且以中心點縮小成方形,以方便旋轉。在取消動畫的實現里還原button。
這里使用了CAShapeLayer,以button調整為方形的frame來畫圓。因為是添加在button的layer上的,所以在取消動畫的時候要清除掉。
這里是添加的旋轉動畫,我用的是修改button的偏移角度來實現旋轉動畫。
在demo里,CAShapeLayer的使用是從網上借鑒的,雖然使用的并不深奧,但也加深了了解。最后附上demo:http://www.oschina.net/code/snippet_2370909_56303