iOS App 基本動畫呈現

Bomi Chen
AppWorks School
Published in
4 min readJul 31, 2017

在 App 上呈現簡單的動畫,可以讓一個 App 顯得更生動有趣,使用者體驗能有視覺上的驚喜,而且僅僅透過幾行簡單的程式碼,就能做到你想像的效果~真的是一件 C/P 值非常高而且值得學習的開發技巧!

本篇我將用 Swift 語法簡介 iOS 開發中,針對 UIView 物件的 animate method.

首先,做動畫前,要準備好下列幾個簡單的事項:

  1. 先想像動畫的樣子,位置、大小、顏色、透明度等等的改變
  2. 知道一個 UIView 物件該改變的參數:
    位置 → 起始點 (x,y) or 中心點 (x,y)
    大小 → 寬度、長度
    顏色 → background color, tint color …etc
    透明度 → alpha
  3. 耐心,測試去得到想要的結果是需要時間的

準備好,我們就可以來做簡單的動畫了!

效果一:物件大小更改 (針對 Frame 操作)

  1. 創建一個 UIView 物件: aView
  2. 給予 aView 值
  3. 使用 UIView 類中的 method — animate() 來操縱 UIView 變化
  4. 填入動畫效果時間 -> duration,預計動畫要在幾秒內完成
  5. 給予動畫完成時的下一個動作/方法 in completion block (在範例中是再呼叫一次 animate)

此程式碼跑出的效果會是:

效果一動畫結果

效果二:視覺參數更改 (針對顏色、透明度)

  1. 設定兩個 Alpha 值不同的 Function (注意*號),Alpha 為 1,物件會顯示出來,Alpha 為 0,物件則消失。
  2. 在 animateInvisible function 的 completion block 中呼叫另一個 animateVisible function,將兩個 function 串接起來。
效果二程式碼

此程式碼跑出結果會是:

效果二動畫結果

效果三:delay 及加減速參數更改

眼尖的同學會發現在效果一、效果二中方法還有不一樣的地方:

//效果一
UIView.animate(withDuration: 5, animations: {
}) { (_) in }//效果二
UIView.animate(withDuration: 1, delay: 0, options: .curveEaseOut, animations: {
}) { (_) in }

上述程式碼中, UIView.animate() 實作方法是不一樣的,效果二方法需要帶入以下參數:

1. delay:動畫延遲時間,單位為秒

2. options:加減速參數,預設有四種效果,可以決定此動畫的執行速度,分別為: Linear, EaseIn, EaseOut, EaseInOut。以 X 軸為時間,Y 軸為速度的示意圖如下:

From: http://www.jianshu.com/p/c9d572b308bb

看到這裡,你可以試著拆解首頁圖片中,是怎麼做出泡泡球從底部淡入上升的效果嗎?

只要掌握這幾個基本的要件,就可以實作出大部分的動畫效果。但學會做簡單動畫呈現後,在實際應用時,新手常會犯一個錯 —— 沒注意到動畫的使用量,搞得 User 頭昏眼花!

像是下面這張畫面,我想過不到一秒鐘各位應該已經想要往下滑了吧!

太多畫面太複雜,太少則顯得單調。最重要的是找到一個平衡點!做到像太極一樣陰陽相容,陰中有陽,陽中有陰,掌握好分寸,適可而止,才能達到最高境界的天人合一。

「 乾貨推薦 」

最後的最後 (先寫就怕大家不往下看了)推薦一個非常好用 +好看的動畫第三方套件有二十幾種動畫效果可以選擇使用,透過簡單的設定參數,就能輕鬆達到不同的動畫效果,懶得自己寫動畫的話,這萬顆星星的 3rd Party 動畫大推~超級好用啊啊啊啊!

感謝你看到最後,希望這篇文章有幫助到想了解基礎動作的你,如果有建議或問題,都歡迎你留言與我交流唷!

--

--