就2小時教會你抽絲剝繭CAAnimation核心動畫之精美的下載動畫

喬同X發表於2016-09-01

閒來無事,狂進了materialup網站,不經意間瞅見一個下載的小動畫,覺得很是有趣.於是,我就它給實現一下~

11download_icon

設計靈感

設計此效果的作者 Nick;
12download

開始之前你需要了解的

先上一張CAAnimation層次圖:
13caanimation

圖上只是一些類的常用屬性,後邊更多程式碼會講到.

怎樣分解動畫

關於分解gif,其實用mac 預覽 開發gif檔案,就可以看到所有幀的圖片.
14fenjie_download

選取其中幾張動畫節點的圖片存好備用.比如:
15download1
16download2
17download3
18download4
19download5

考慮到適配問題service類裡已經提取好了.

怎樣連貫動畫

連貫動畫是展示你做的效果流暢不流暢,看著舒服不舒服的能力.其實我是也是嘗試很多遍,讓很多人看了這個效果,有說彆扭的我們就改,咋順咋來.所以讓動畫連貫起來尤為重要.

第一,就是要動畫節點要選準確,定位好動畫與動畫的銜接處.
第二,讓動畫結束時,恢復自然狀態,而不是預設狀態.儘量不要有太大的差異和不規整的地方
第三,使用組合動畫,掐好時間節點.

簡單的就說就說這麼多,下面我們開始演練程式碼~~

程式碼實現

基本實現想法

1.自定義UIControl類,因為它本身就是UIView子類,做點選事件的View再好不過.(另一種方式用block點選回撥)
2.點選區域是否在圓內判斷
3.兩個CAShapeLayer圓環+(一個CAShapeLayer箭頭和CAShapeLayer豎線)組合成箭頭+label
4.一個service類管理建立所用到的path和animation

service 類

service屬性

service方法

service key

service 比例係數

download 類

屬性

所有方法預覽

20download_all

方法比較多,在這不一一展示了,有感興趣的童鞋可以直接去github下載,記得點個星星哦~~~?

呼叫

新增事件

或者block回撥

這裡模擬網路請求資料

最終效果

現實與理想還是有些差距,希望不是很大,在此分享一下自己研究的經驗,有任何問題都可以Issues我,

21download_animation

相關文章