Lottie-iOS使用心得
移動開發發展了10多年了,在當今一個APP想要脫穎而出必須在使用者體驗上足夠出色,而APP使用者介面動畫就能極大地提升使用者體驗流暢感和互動感,這也常常是區分APP優秀與否的一個重要標準。但是實現一個試圖切換複雜的動畫是非常複雜費時的gif體驗太差!!。每次設計師向我展示一個很好很酷的動畫並希望能置入應用時,我也覺得這很酷炫啊,高大上啊,道理我都懂,可是專案版本時間有限啊,然後就不了了之。
Airbnb開源的Lottie,可以讓開發者免去寫一行一行的程式碼而非常容易地渲染動畫。你可以直接把 Adobe After Effects的動畫用在你的Xcode 專案中。並且Android、macOS、React Native都可使用。
首先要說的是:什麼是Lottie呢?由Airbnb開發的[Lottie](https://github.com/airbnb/lottie-ios)是一個將After Effects動畫提供給任意一個iOS,macOS,Android還有React Native原生APP的檔案庫。這些動畫通過一個叫[Bodymovin](https://github.com/bodymovin/bodymovin)的開源After Effects外掛,以JSON檔案的形式進行輸出。Lottie通過JSON格式下載動畫資料並實時提供給開發者。
Lottie現在不僅在GitHub上已經開源,而且還提供一個示例專案和一系列的示例動畫
在Xcode中使用Lottie
到https://github.com/airbnb/lottie-ios下載最新版本原始碼,其中自帶了 Demo,可執行方便學習。
整合的方法可以使用 cocoapods 方式整合,也可以使用 Carthage 方式整合。整合方法見官網說明。
pod install 安裝成功後,在需要使用的檔案中加入標頭檔案的引用
#import <Lottie/Lottie.h>
獲取到本地的動畫json檔名
self.jsonFiles = [[NSBundle mainBundle] pathsForResourcesOfType:@"json" inDirectory:nil];
NSString *fileURL = self.jsonFiles[indexPath.row];
NSArray *components = [fileURL componentsSeparatedByString:@"/"];
if (self.completionBlock)
{
self.completionBlock(components.lastObject);
}
通過json檔名開始動畫
self.laAnimation = [LOTAnimationView animationNamed:named];
self.laAnimation.contentMode = UIViewContentModeScaleAspectFit;
[self.view addSubview:self.laAnimation];
[self.view setNeedsLayout];
通過遠端url建立動畫
self.laAnimation = [[LOTAnimationView alloc] initWithContentsOfURL:[NSURL URLWithString:URL]]; self.laAnimation.contentMode = UIViewContentModeScaleAspectFit; [self.view addSubview:self.laAnimation]; [self.view setNeedsLayout];
更多功能待補充
優缺點
優點:
1、開發成本低。設計師匯出 json 檔案後,扔給開發即可。原本要1天甚至更久的動畫實現,現在只要不到一小時。
2、動畫的實現成功率高,只有想不到,沒有辦不到。
3、支援服務端 URL 方式建立。所以可以通過服務端配置 json 檔案,隨時替換客戶端的動畫,不用通過發版本就可以做到了。比如 app 啟動動畫可以根據活動需要進行變換了。(重要)
4、效能。可以替代原來需要使用幀圖完成的動畫。
5、跨平臺。iOS、安卓平臺可以使用一套檔案。省時省力,動畫一致。不用設計師跑去兩邊去跟著微調確認了。
6、支援轉場動畫。 PresentViewController/DismissViewController 時可以做轉場效果。
不足:
1、對系統平臺版本限制,如 iOS8 及以上,安卓 API14 及以上。
2、對可互動的動畫暫時還不行。主要是以播放型別動畫。
相關文章
- onenote使用心得
- PyCharm使用心得PyCharm
- Composer使用心得
- nessus使用教程心得
- 路由使用心得技巧路由
- thinkcmf 的使用心得
- eclipse的使用心得Eclipse
- idea使用技巧、心得1Idea
- svg圖示使用心得SVG
- react 與 vue 使用心得ReactVue
- Git 使用經驗及心得Git
- php curl的使用心得PHP
- mybatis-plus 使用心得MyBatis
- 國產晶片使用心得晶片
- Django使用心得(一) 善用migrationsDjango
- TextIn.com API使用心得API
- canvas 2 image的使用小心得Canvas
- GitHub使用心得——倉庫建立Github
- Django使用心得(二) 使用TestCase測試介面Django
- nacos 作為配置中心使用心得--配置使用
- better-scroll使用的坑與心得
- 淺談antd@5使用心得
- provider的使用以及優化心得IDE優化
- Django 使用心得 (四)多資料庫Django資料庫
- 遺傳演算法組卷使用心得演算法
- 分享一下我的 PhpStorm 使用心得PHPORM
- 適合才最美:Shiro安全框架使用心得框架
- LuckySheet一款線上Excel使用心得Excel
- 完全使用 VSCode 開發的心得和體會VSCode
- 休假心得
- PHP trait 特性在 Laravel 中的使用個人心得PHPAILaravel
- elastic-job-lite 使用的一點心得和坑AST
- 2024年最新版Typora免費使用教程心得
- 【超詳細】安全測試===sqlmap使用心得(零)SQL
- Mac 使用心得,調整MacOS的游標大小Mac
- 使用 win10 子系統開發心得 Laravel envoy 簡單使用Win10Laravel
- Vue 的使用心得,也許你也能頓悟Vue
- HT for Web (Hightopo) 使用心得(5)- 動畫的實現Web動畫