使用Lottie做載入動畫
先給出Lottie的連結:Lottie-iOS
使用Lottie做動畫的好處:
- 多平臺統一,包括使用和動畫效果
- 不用匯入圖片,只需要一個json檔案(大小隻有幾kb到幾十kb),有效減小應用安裝包體積
- 程式設計師幾乎不用寫動畫程式碼,也能達到炫酷的動畫效果
最主要的兩個類是AnimationView
和Animation
,AnimationView
是執行動畫的View,Animation
即所執行的動畫。例如載入動畫:
建立一個AnimationView
let animationView: AnimationView = {
let animationView = AnimationView()
animationView.size = CGSize(width: 170, height: 170)
return animationView
}()
複製程式碼
建立一個Animation
例項,並將它賦值給animationView
的animation屬性
let animation = Animation.named("animationName")
animationView.animation = animation
複製程式碼
其中animationName
是json
檔名,可以在這裡下載,也可以自己製作。
下面就可以在需要的地方執行動畫了
animationView.play(fromProgress: 0, toProgress: 1, loopMode: .loop, completion: nil)
複製程式碼
動畫可以終止或暫停
animationView.stop()
animationView.pause()
複製程式碼
最後,這裡是一個使用Lottie做的loadingView庫。可以在LottieFiles官網下載動畫的json檔案匯入專案。
使用pod安裝
pod 'LottieLoadingView'
複製程式碼
匯入
import LottieLoadingView
複製程式碼
// 設定動畫
AQLoadingView.shared.animationName = "935-loading"
// 開始載入
AQLoadingView.startLoading()
// 處理任務
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5) {
// 結束載入
AQLoadingView.endLoading()
}
複製程式碼
使用Lottie做載入動畫
先給出Lottie的連結:Lottie-iOS
使用Lottie做動畫的好處:
- 多平臺統一,包括使用和動畫效果
- 不用匯入圖片,只需要一個json檔案(大小隻有幾kb到幾十kb),有效減小應用安裝包體積
- 程式設計師幾乎不用寫動畫程式碼,也能達到炫酷的動畫效果
最主要的兩個類是AnimationView
和Animation
,AnimationView
是執行動畫的View,Animation
即所執行的動畫。例如載入動畫:
建立一個AnimationView
let animationView: AnimationView = {
let animationView = AnimationView()
animationView.size = CGSize(width: 170, height: 170)
return animationView
}()
複製程式碼
建立一個Animation
例項,並將它賦值給animationView
的animation屬性
let animation = Animation.named("animationName")
animationView.animation = animation
複製程式碼
其中animationName
是json
檔名,可以在這裡下載,也可以自己製作。
下面就可以在需要的地方執行動畫了
animationView.play(fromProgress: 0, toProgress: 1, loopMode: .loop, completion: nil)
複製程式碼
動畫可以終止或暫停
animationView.stop()
animationView.pause()
複製程式碼
最後,這裡是一個使用Lottie做的loadingView庫。可以在LottieFiles官網下載動畫的json檔案匯入專案。
使用pod安裝
pod 'LottieLoadingView'
複製程式碼
匯入
import LottieLoadingView
複製程式碼
// 設定動畫
AQLoadingView.shared.animationName = "935-loading"
// 開始載入
AQLoadingView.startLoading()
// 處理任務
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5) {
// 結束載入
AQLoadingView.endLoading()
}
複製程式碼
效果圖: