乾貨系列之實現City Guides的動畫效果(二)

發表於2016-04-03

點此下載原始碼下載:原始碼(會持續更新,歡迎star。保證炫酷,童叟無欺!)

city guides插圖.jpg

數字動態變化的動畫效果

本篇文章要實現的動畫效果如下。

由於生成gif幀動畫時間較短的問題,有部分動畫效果並沒有顯示體現出來。小編解析一下上面的gif動畫效果。

本篇文章最後有最終實現的效果圖。

解析動畫
  1. 從上一個viewController進入到StatsViewController,是一個動畫轉場。(本篇文章不詳細講解)
  2. 顯示當前檢視,檢視是從底部滑入。在滑入進入的過程中,檢視上的部分子檢視動畫的變化(如:UILabel上的數字,CAGradientLayer的顏色等)。
  3. 當前檢視載入完畢,滾動檢視。在滾動過程中,有的檢視同時向兩側移動逐漸消失或出現,有的檢視向左逐漸移動消失或出現,而有的檢視向右移動逐漸消失或出現。
  4. 子檢視向左或者向右移動的過程中,部分子檢視動態的變化。
設計思路

針對上面的每一步進行逐步設計實現。

  1. 參見原始碼,不詳細介紹。
  2. StatsViewController上是由一個UIScrollView,從底部滑入的動畫。

如何實現UILabel數字的動態變化呢?

開源專案pop動畫幫我們實現了,小編來講解如何實現吧。封裝實現動畫的UILabel的方法。

建立UILabel加入到當前檢視中,實現數值由0到238874變化。

3.自定義封裝UIScrollView上的子檢視。(詳細講解這一部分的思路)

小編的設計思路是:每一行是一個ZFSliderAnimationView。ZFSliderAnimationView中,有一個或多個ZFSliderAnimationItem組成。

ZFSliderAnimationItem的定義,如下:

建立ZFSliderAnimationView可以定義多個型別如下:

對應複雜的自定義檢視,作為單獨一個View傳人到ZFSliderAnimationView中。在本篇文章中,ZFRainDropView和ZFGradientView都是自定義的檢視傳人到ZFSliderAnimationView中。這樣的好處避免ZFSliderAnimationView類程式碼顯得特別的臃腫,而且耦合性降低。只需要建立自己所期望的UIView傳人即可。

ZFSliderAnimationView根據style初始化:

在滾動UIScrollView時,每個item是向左還是向右移動。ZFSliderAnimationView的動畫型別定義如下:

然後根據ZFSliderItemAnimation的值實現每個item移動:

在StatsViewController中,滾動UIScrollView由UIScrollView的頂部和底部的偏移量確定當前哪個檢視移動的百分比。

4.動態變化子檢視內容。

最終效果圖:

結束語

在本篇演示的內容中,還一部分是關於漸變顏色的取值。等分插值取值,動態實現顏色的變化。詳細的參考原始碼中的ZFGradientView。

擴充套件閱讀:

乾貨系列之實現City Guides的動畫效果(一)

相關文章