LOTTIE-跨平臺的動畫解決方案

1.Lottie是什么

Lottie是Airbnb開源的一個支持iOS,Android,React Native和Web的動畫庫,我們可以使用設(shè)計師導(dǎo)出來的json文件快速實(shí)現(xiàn)動畫效果.

2.如果我們想要實(shí)現(xiàn)下列動畫


我們使用現(xiàn)有技術(shù)會遇到的問題:

1.每一幀都是一張圖片屿讽,文件過于龐大。

2.不同分辨率設(shè)備的適配存在不便吠裆。

3.Gif格式的色深問題無法解決伐谈。

4.想要在線獲取動畫成本比較高。

替代方案:

現(xiàn)在可以使用開源的Lottie動畫庫來實(shí)現(xiàn)相應(yīng)效果试疙。

UI需要做的是诵棵,通過AE生成動畫,然后使用bodymovin插件導(dǎo)出json和sourse(非必須)文件即可祝旷。

對比gif和json的大小及清晰度區(qū)別:

上面的方案:原始518k,壓縮后514k

下面的方案:原始29k,壓縮后5k

3.使用方法

1.直接添加一個動畫視圖

2.switch類控件

3.轉(zhuǎn)場動畫

支持協(xié)議即可,在回調(diào)中使用動畫

4.代碼結(jié)構(gòu)

LOTAnimationView

繼承自LOTView,也就是UIView,主要是封裝了一些動畫的操作

LOTComposition(動畫數(shù)據(jù))

用于解析動畫的json文件履澳,獲取整個動畫數(shù)據(jù)

LOTLayerGroup(Layer動畫組)

解析json文件中的"layers"?層的數(shù)據(jù)返回所有LOTLayer?集合

LOTLayer

解析獲得json文件中的每一個layer數(shù)據(jù)具體詳情

更多結(jié)構(gòu)示意

5.注意事項(xiàng)

? 如果使用了素材, 那么素材圖片的每個像素都會直接加載進(jìn)內(nèi)存, 并且是不能釋放掉的, 所以, 如果是一些小圖片, 加載進(jìn)去也還好, 但是如果是整頁的啟動動畫, 不拆分一下素材, 可能一個啟動頁所需要的內(nèi)存就是50MB以上. 如果不使用素材, 而是在AE中直接繪制則沒有這個問題.

? 如果使用的PS中繪制的素材, 在AE中做動畫, 可能在動畫導(dǎo)出的素材中出現(xiàn)黑邊, 解決辦法是將素材拖入PS去掉黑邊, 同名替換.

? 拆分素材的辦法是將一個動畫中靜態(tài)的部分直接切出來加載, 動的部分單獨(dú)做動畫

? 如果一個項(xiàng)目中使用了多個Lottie的動畫, 需要注意Json文件中的路徑及素材名稱不能重復(fù), 否則會錯亂

? Lottie先天就支持播放式動畫, 對于交互式動畫有個animationProgress的屬性

4.其他

圖片的另一種形式-矢量圖

導(dǎo)入工程的方式:

1.簡單使用

與 PNG 格式的圖片一樣,在 Xcode 中把 PDF 格式的矢量圖拖進(jìn) *.xcassets (默認(rèn)是 Assets.xcassets) 文件夾中怀跛,然后用不帶后綴(.pdf)的文件名生成 UIImage

imageView.image?=?[UIImage?imageNamed:@"Vector"];

注意距贷,如果以上代碼用 "Vector.pdf",無法得到 UIImage吻谋。

這樣做的話忠蝗,Xcode 會在編譯時根據(jù) PDF 圖的大小生成 @1x、@2x漓拾、@3x 的 PNG 圖片阁最,與使用 PNG 圖片的顯示效果相同。如果把圖片放大到超過 PNG 圖片的大小骇两,則會顯示模糊的圖片闽撤。沒有發(fā)揮矢量圖可以任意調(diào)整大小的優(yōu)點(diǎn)。

2.改變矢量圖大小

如果需要改變矢量圖大小并且保持清晰度脯颜,那就要解析 PDF 源文件,把矢量圖繪制成所需大小的位圖(Bitmap)贩据。YHPDFImageLoader?庫就實(shí)現(xiàn)了這個功能栋操,并且可以選擇拉伸圖片時是否保持原圖寬高比闸餐,還添加了內(nèi)存和磁盤緩存。這里的 PDF 文件放在工程目錄中矾芙,與 *.m舍沙、*.h 文件一樣,可以放在bundle,不能放在 *.xcassets 里剔宪。

矢量圖加入工程中的優(yōu)點(diǎn)

1.APP 瘦身

對比一下某個圖標(biāo)的一套常規(guī)的 PNG 圖片和 PDF 類型的圖片的大蟹髡 :

網(wǎng)絡(luò)資源

PDF 文件大小為 7KB

PNG 三個文件合計大小為 85KB

這里的PNG圖片還可以壓縮,壓縮后可能會有較大幅度變更.

2.便于維護(hù)

方便后續(xù)的不同scale變化,不必要使用4x,5x等尺寸

3.可以無限放大

在文件大小固定的情況下可以無限放大,更加節(jié)省空間

其他工具 - PaintCode

代碼直接將SVG文件轉(zhuǎn)換成iOS代碼,可以放到drawRect中實(shí)現(xiàn)純代碼繪制相應(yīng)UI樣式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市葱绒,隨后出現(xiàn)的幾起案子感帅,更是在濱河造成了極大的恐慌,老刑警劉巖地淀,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件失球,死亡現(xiàn)場離奇詭異,居然都是意外死亡帮毁,警方通過查閱死者的電腦和手機(jī)实苞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烈疚,“玉大人黔牵,你說我怎么就攤上這事∫危” “怎么了猾浦?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長阶剑。 經(jīng)常有香客問我跃巡,道長,這世上最難降的妖魔是什么牧愁? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任素邪,我火速辦了婚禮,結(jié)果婚禮上猪半,老公的妹妹穿的比我還像新娘兔朦。我一直安慰自己,他們只是感情好磨确,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布沽甥。 她就那樣靜靜地躺著,像睡著了一般乏奥。 火紅的嫁衣襯著肌膚如雪摆舟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機(jī)與錄音恨诱,去河邊找鬼媳瞪。 笑死,一個胖子當(dāng)著我的面吹牛照宝,可吹牛的內(nèi)容都是我干的蛇受。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼厕鹃,長吁一口氣:“原來是場噩夢啊……” “哼兢仰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起剂碴,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤把将,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后汗茄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秸弛,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年洪碳,在試婚紗的時候發(fā)現(xiàn)自己被綠了递览。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡瞳腌,死狀恐怖绞铃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嫂侍,我是刑警寧澤儿捧,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站挑宠,受9級特大地震影響菲盾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜各淀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一懒鉴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碎浇,春花似錦临谱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至苟穆,卻和暖如春抄课,著一層夾襖步出監(jiān)牢的瞬間唱星,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工剖膳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留魏颓,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓吱晒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親沦童。 傳聞我的和親對象是個殘疾皇子仑濒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件偷遗、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,024評論 4 62
  • 關(guān)于URLConnection的getContentLength函數(shù)返還-1墩瞳,網(wǎng)上幾乎所有的說法,都是說因?yàn)閱恿?..
    pinkong閱讀 1,971評論 1 2
  • 陶溪川藝術(shù)區(qū)高聳的煙囪氏豌、玻璃隔斷內(nèi)被完好保留的舊工廠設(shè)施喉酌、整齊劃一紅磚砌就的極簡工業(yè)風(fēng)格,仿佛回到北京798進(jìn)修的...
    ciciLeee閱讀 254評論 0 0
  • 夜空泵喘,是夢的畫板 勾勒出難能一見的 飛魚和大海 飛機(jī)泪电,是愛的驚喜 思念跨越光年傳遞 牛郎和織女
    阿金的酒與詩閱讀 80評論 0 2
  • 文/葉老巫 || 每天絮絮叨叨,堅持日更纪铺, 今天是第 121 篇 1相速、 百度一下,干貨文一大把一大把的鲜锚,實(shí)在太多了...
    葉兩步閱讀 844評論 5 27