iOS App 基本動畫呈現
在 App 上呈現簡單的動畫,可以讓一個 App 顯得更生動有趣,使用者體驗能有視覺上的驚喜,而且僅僅透過幾行簡單的程式碼,就能做到你想像的效果~真的是一件 C/P 值非常高而且值得學習的開發技巧!
本篇我將用 Swift 語法簡介 iOS 開發中,針對 UIView 物件的 animate method.
首先,做動畫前,要準備好下列幾個簡單的事項:
- 先想像動畫的樣子,位置、大小、顏色、透明度等等的改變
- 知道一個 UIView 物件該改變的參數:
位置 → 起始點 (x,y) or 中心點 (x,y)
大小 → 寬度、長度
顏色 → background color, tint color …etc
透明度 → alpha - 耐心,測試去得到想要的結果是需要時間的
準備好,我們就可以來做簡單的動畫了!
效果一:物件大小更改 (針對 Frame 操作)
- 創建一個 UIView 物件: aView
- 給予 aView 值
- 使用 UIView 類中的 method — animate() 來操縱 UIView 變化
- 填入動畫效果時間 -> duration,預計動畫要在幾秒內完成
- 給予動畫完成時的下一個動作/方法 in completion block (在範例中是再呼叫一次 animate)
此程式碼跑出的效果會是:
效果二:視覺參數更改 (針對顏色、透明度)
- 設定兩個 Alpha 值不同的 Function (注意*號),Alpha 為 1,物件會顯示出來,Alpha 為 0,物件則消失。
- 在 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 軸為速度的示意圖如下:
看到這裡,你可以試著拆解首頁圖片中,是怎麼做出泡泡球從底部淡入上升的效果嗎?
只要掌握這幾個基本的要件,就可以實作出大部分的動畫效果。但學會做簡單動畫呈現後,在實際應用時,新手常會犯一個錯 —— 沒注意到動畫的使用量,搞得 User 頭昏眼花!
像是下面這張畫面,我想過不到一秒鐘各位應該已經想要往下滑了吧!
太多畫面太複雜,太少則顯得單調。最重要的是找到一個平衡點!做到像太極一樣陰陽相容,陰中有陽,陽中有陰,掌握好分寸,適可而止,才能達到最高境界的天人合一。
「 乾貨推薦 」
最後的最後 (先寫就怕大家不往下看了)推薦一個非常好用 +好看的動畫第三方套件,有二十幾種動畫效果可以選擇使用,透過簡單的設定參數,就能輕鬆達到不同的動畫效果,懶得自己寫動畫的話,這萬顆星星的 3rd Party 動畫大推~超級好用啊啊啊啊!
感謝你看到最後,希望這篇文章有幫助到想了解基礎動作的你,如果有建議或問題,都歡迎你留言與我交流唷!