Tangram系列(一)iOS Tangram入門

iOS入門

timg.jpeg

Tangram2.0庫

Android

Tangram-Android
Virtualview-Android

iOS

Tangram-iOS
Virtualview-iOS

tangram 使用的工具類
virtualview_tools

Tangram

ios的Tagram總體由四部分構(gòu)成:Core,Layout,EventBus,Helper


13399000.jpg
1撩嚼、Core

Tangram的復(fù)用和回收機制是由core負責(zé)的蚊锹。主要的原理就是使用了LazyScroll(底層是UIScrollView)筒占,就是先把LazyScroll里面所有需要回收復(fù)用的視圖的絕對坐標先整理出來晚碾,然后在LazyScroll滾動的時候,查找哪些視圖需要回收扔字,哪些視圖需要復(fù)用囊嘉。core主要是TangramView。

TangramView的核心方法:


15752663230718.jpg
2革为、LayOut

LayOut主要負責(zé)處理內(nèi)部組件擺放的位置扭粱。布局需要實現(xiàn)TangramLayoutProtocol。它的核心方法是calculateLayout震檩,這里面需要安排內(nèi)部ViewModel的位置琢蛤,決定后面要生成的視圖要如何擺放。
Tangram有豐富的內(nèi)置布局可供選擇抛虏,比如 流式布局博其、一拖N的、浮標迂猴、固定慕淡、吸頂、吸底错忱、輪播儡率、線性滾動、瀑布流等布局以清,當(dāng)然布局也可以自行拓展。因為有些布方式比較特殊崎逃,TangramView會對它們有特殊的處理邏輯掷倔。

布局樣式:


15749110216877.jpg

內(nèi)置的布局類型,可以參考
http://tangram.pingguohe.net/docs/layout-support/inner-support

3个绍、EventBus

事件總線用于組件和Controller勒葱,layout、TangramView之間的通信巴柿。點擊凛虽、曝光就是典型的事件總線使用場景。
事件總線的使用方法:


15749109334425.jpg
4广恢、Helper

Helper的作用是簡化代碼凯旋,快速生成布局、組件。

Helper具體是指TangramDefaultDataSourceHelper, 這個解析器具備以下功能:

  • 快速解析layout---(NSDictionary -> layout實例)
  • 快速解析Model-----(NSDictionary -> model實例)
  • 從model快速生成element----(model實例 ->組件實例)
  • 用新的model刷新即將被復(fù)用的element
15752573326331.jpg

TangramDefaultDataSourceHelper實際上是串聯(lián)起來了三種類型的工廠類至非,每種各需要一個钠署。Helper在這三個工廠提供的API基礎(chǔ)上,再封裝成更易于使用的API荒椭。這三個工廠默認的是

  • TangramDefaultLayoutFactory
  • TangramDefaultItemModelFactory
  • TangramDefaultElementFactory
15752581576050.jpg

VirtualView

VirtualView簡介

VirtualView 是 Tangram 2.0 庫中的一個重要組成部分谐鼎。是Tangram模型在V2.0補充的UI開源庫。

VirtualView的作用
解決Tangram V1.0中加載性能低和UI組件沒有辦法動態(tài)更新的問題趣惠。

VirtualView的功能

  1. 使用Canvas繪制視圖狸棍,創(chuàng)建虛擬化組件
  2. 通過XML快速的創(chuàng)建界面模版
  3. 客戶端運行時動態(tài)加載XML模版,從而渲染界面

15754410484609.jpg

VirtualView被稱為虛擬組件的原因
1味悄、使用canvas繪制視圖
2隔缀、不存在實際的view,依賴于宿主容器視圖
3傍菇、VirtualView不想我們平常使用的一些控件猾瘸,比如Label,Button等等

15754427907248.jpg

VirtualView的主要流程

提供了用 XML 去書寫 UI 組件的方案丢习,然后動態(tài)化下發(fā)編譯好的二進制文件牵触,最后再利用客戶端內(nèi)置的 SDK 來解析展示這些 UI 組件。

VirtualView的主要流程:


15752725196473.jpg

流程:

  1. 編寫業(yè)務(wù)組件模板
  2. 通過工具將模板數(shù)據(jù)編譯成二進制數(shù)據(jù)咐低。注意加載 XML 并不是直接加載原始 XML 文件揽思,而是先通過 virtualview_tools 編譯成一段二進制數(shù)據(jù),生成后綴為 .out的文件见擦。
  3. 下發(fā)到客戶端钉汗。客戶端加載二進制數(shù)據(jù)可以有兩種路徑:
    第一種:直接將編譯結(jié)果打包到客戶端里加載鲤屡,
    第二種:是發(fā)布到模板管理后臺cdn上损痰,讓客戶端去下載,在線更新到模版數(shù)據(jù)酒来。
  4. 加載解析二進制數(shù)據(jù)卢未。不論是那種方式加載二進制數(shù)據(jù),客戶端的工作都需要解析二進制數(shù)據(jù)堰汉,比如校驗版本號辽社,合法性,讀取頭信息等等翘鸭。
  5. 創(chuàng)建組件視圖滴铅。會根據(jù)組件名稱找到二進制數(shù)據(jù),通過上面介紹過的Helper工具解析并且創(chuàng)建出真正的組件模型數(shù)據(jù)就乓。
  6. 綁定業(yè)務(wù)數(shù)據(jù)汉匙。用戶需要獲取到業(yè)務(wù)數(shù)據(jù)綁定到組件上拱烁,組件的屬性里可以寫表達式來指定使用哪一個數(shù)據(jù)字段。
  7. 顯示盹兢,組件結(jié)合業(yè)務(wù)數(shù)據(jù)渲染在視圖上面邻梆。

VirtualView的特點

15754284596053.jpg

1、渲染性能高绎秒。渲染出來的視圖結(jié)構(gòu)呈現(xiàn)扁平化浦妄。
2、組建熱更新见芹〖谅Γ可以通過配套的xml模版來更新sdk;可以動態(tài)更新組件和界面玄呛。
3阅懦、跨平臺。一套xml模版徘铝,可以android耳胎、iOS倆個不同的平臺使用。
4惕它、兼容性好怕午。可以支持加載淹魄、渲染原生基礎(chǔ)組件郁惜;也可以解決虛擬化view帶來的原生view的能力損失的問題。
5甲锡、使用方便兆蕉。它內(nèi)置了一系列基礎(chǔ)組件可以直接被使用;也支持數(shù)據(jù)綁定的表達式缤沦。也可以在樣式動態(tài)化虎韵。數(shù)據(jù)動態(tài)化的場景下能非常方便地實現(xiàn)業(yè)務(wù)需求。

參考文件

http://www.reibang.com/p/48764ff8449f

http://www.reibang.com/p/cd634106f533

http://pingguohe.net/2017/04/24/tangram-ios-structure.html

http://tangram.pingguohe.net/docs/ios/tangram-core

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疚俱,一起剝皮案震驚了整個濱河市劝术,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呆奕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衬吆,死亡現(xiàn)場離奇詭異梁钾,居然都是意外死亡,警方通過查閱死者的電腦和手機逊抡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門姆泻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來零酪,“玉大人,你說我怎么就攤上這事拇勃∷奈” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵方咆,是天一觀的道長月腋。 經(jīng)常有香客問我,道長瓣赂,這世上最難降的妖魔是什么榆骚? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮煌集,結(jié)果婚禮上妓肢,老公的妹妹穿的比我還像新娘。我一直安慰自己苫纤,他們只是感情好碉钠,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卷拘,像睡著了一般喊废。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恭金,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天操禀,我揣著相機與錄音,去河邊找鬼横腿。 笑死颓屑,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的耿焊。 我是一名探鬼主播揪惦,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼罗侯!你這毒婦竟也來了器腋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤钩杰,失蹤者是張志新(化名)和其女友劉穎纫塌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讲弄,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡措左,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了避除。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怎披。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡胸嘁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凉逛,到底是詐尸還是另有隱情性宏,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布状飞,位于F島的核電站毫胜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏昔瞧。R本人自食惡果不足惜指蚁,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望自晰。 院中可真熱鬧凝化,春花似錦、人聲如沸酬荞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽混巧。三九已至枪向,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咧党,已是汗流浹背秘蛔。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留傍衡,地道東北人深员。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像蛙埂,于是被迫代替她去往敵國和親倦畅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

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