用MyLayout實(shí)現(xiàn)布局性能的提升以及對(duì)阿拉伯國(guó)家的支持

iOS界面布局庫(kù)MyLayoutTangramKit已經(jīng)完成新版本的升級(jí)并且已經(jīng)更新到github和cocoapod上面搀军。這次新版本更新的兩個(gè)大亮點(diǎn)是對(duì)界面布局的性能進(jìn)行了大幅度的提升和對(duì)阿拉伯國(guó)家需要進(jìn)行RTL方向布局的支持

性能的提升勇皇。

多說無益罩句,圖表最具說服力

下面的圖表是在iPhone6真機(jī)設(shè)備上用MyLayout和frame以及AutoLayout進(jìn)行構(gòu)建和布局的時(shí)間對(duì)比表格,里面的數(shù)據(jù)是每個(gè)視圖的構(gòu)建時(shí)間和布局時(shí)間敛摘,單位都是毫秒:

視圖的構(gòu)建和布局時(shí)間
視圖的構(gòu)建和布局時(shí)間
構(gòu)建時(shí)間 Frame MyLayout AutoLayout Masonry UIStackView
TGLinearLayout 0.08 0.164 0.219 0.304 0.131
TGFrameLayout 0.05 0.149 0.209 0.273 0.131
TGRelativeLayout 0.079 0.182 0.116 0.359 0.131
TGFlowLayout 0.08 0.107 0.198 0.258 0.131
TGFloatLayout 0.044 0.148 0.203 0.250 0.131
布局時(shí)間 Frame MyLayout AutoLayout Masonry UIStackView
TGLinearLayout 0 0.049 0.269 0.269 0.272
TGFrameLayout 0 0.042 0.243 0.243 0.272
TGRelativeLayout 0 0.068 0.274 0.274 0.272
TGFlowLayout 0 0.036 0.279 0.279 0.272
TGFloatLayout 0 0.055 0.208 0.208 0.272

下面的表格則是新老版本的性能提升對(duì)比圖:

構(gòu)建時(shí)間 1.3.6 1.3.5 提升% 布局時(shí)間 1.3.6 1.3.5 提升%
MyLinearLayout 0.164 0.211 28% 0.049 0.160 226%
MyFrameLayout 0.149 0.212 42% 0.042 0.142 234%
MyRelativeLayout 0.182 0.215 18% 0.068 0.137 101%
MyFlowLayout 0.107 0.146 37% 0.036 0.111 210%
MyFloatLayout 0.148 0.147 -0.48% 0.055 0.117 113%

從上面的表格中我們得出如下結(jié)論:

  1. 用frame構(gòu)建視圖用時(shí)最少门烂,平均每個(gè)視圖花費(fèi)0.068ms。當(dāng)視圖的frame指定后就不再需要布局視圖了兄淫,所以布局時(shí)間幾乎是0屯远。
  2. 當(dāng)用AutoLayout進(jìn)行布局時(shí)每個(gè)子視圖的平均構(gòu)建時(shí)長(zhǎng)約為0.189ms,而Masonry因?yàn)槭菍?duì)AutoLayout的封裝所以平均構(gòu)建時(shí)長(zhǎng)約為0.289ms捕虽。在布局時(shí)則因?yàn)槎际鞘褂昧薃utoLayout所以是相等的慨丐,大概花費(fèi)0.255ms左右。
  3. MyLayout的實(shí)現(xiàn)因?yàn)槭菍?duì)frame的封裝泄私,所以無論是構(gòu)建時(shí)長(zhǎng)和布局時(shí)長(zhǎng)都要優(yōu)于AutoLayout房揭,但低于原始的frame方法备闲。MyLayout的平均構(gòu)建時(shí)長(zhǎng)約0.150ms,比frame構(gòu)建要多花費(fèi)2.2倍的時(shí)間捅暴;而AutoLayout的平均構(gòu)建時(shí)長(zhǎng)是MyLayout的1.26倍恬砂;Masonry的平均構(gòu)建時(shí)長(zhǎng)則是MyLayout的1.9倍。
  4. MyLayout的平均布局時(shí)長(zhǎng)是0.05ms, 而AutoLayout的布局時(shí)長(zhǎng)則是MyLayout的5倍蓬痒。
  5. UIStackView的構(gòu)建時(shí)長(zhǎng)要稍微優(yōu)于MyLayout的線性布局MyLinearLayout.但是布局時(shí)長(zhǎng)則是MyLinearLayout的5.5倍泻骤。
  6. MyLayout中流式布局MyFlowLayout的構(gòu)建時(shí)長(zhǎng)和布局時(shí)長(zhǎng)最小,而相對(duì)布局的構(gòu)建和布局時(shí)長(zhǎng)最長(zhǎng)梧奢。
  7. 可以看出隨著視圖數(shù)量的增加Frame和MyLayout的時(shí)長(zhǎng)都是按線性增長(zhǎng)的狱掂,而AutoLayout的是越來越趨向非線性增長(zhǎng)了。
  8. 如果我們使用SB或者XIB進(jìn)行布局時(shí)那么整個(gè)布局的時(shí)長(zhǎng)還要包括對(duì)XML格式文件的解析的時(shí)間因此粹断,雖然SB或者XIB進(jìn)行布局方便但是消耗的時(shí)間是最多的符欠。

RTL的支持嫡霞。

所謂RTL方向布局就是right to left direction瓶埋。也就是界面中的元素總是按從右往左的方向進(jìn)行排列布局,大部分國(guó)家的書寫以及排列習(xí)慣都是從左往右诊沪,是LTR方向布局养筒,而對(duì)于一些阿拉伯國(guó)家,文字的書寫以及展示的順序都是從右往左方向的端姚,下面的兩張圖片展示了阿拉伯國(guó)家的界面展示效果晕粪。

RTL布局

RTL布局

蘋果在iOS9中對(duì)RTL進(jìn)行了全面的支持。而MyLayoutTangramKit這次新升級(jí)的版本對(duì)RTL的支持可是沒有任何版本限制的渐裸。為了實(shí)現(xiàn)對(duì)RTL的支持我們?cè)谒椒较蛱岢隽薼eading和trailing的概念巫湘,中文就是理解為頭部和尾部。當(dāng)您是LTR方向布局時(shí)leading就是代表的左邊而trailing則是代表的右邊昏鹃;而當(dāng)您是RTL方向布局時(shí)leading就代表的是右邊而trailing則代表的是左邊尚氛。通過這個(gè)新定義的概念您就不需要擔(dān)心在進(jìn)行國(guó)際化布局時(shí)指定方向了。下面是MyLayout中對(duì)RTL支持的一些效果洞渤。

MyLayout對(duì)RTL的支持

為了實(shí)現(xiàn)RTL的支持您只需要將MyLayout的一個(gè)全局屬性isRTL設(shè)置為YES或者NO就行了阅嘶,通過這個(gè)屬性可以很方便的切換布局的方向了。

最后歡迎大家關(guān)注我的iOS界面布局庫(kù):
MyLayout: https://github.com/youngsoft/MyLinearLayout
TangramKit: https://github.com/youngsoft/TangramKit

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末载迄,一起剝皮案震驚了整個(gè)濱河市讯柔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌护昧,老刑警劉巖魂迄,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異惋耙,居然都是意外死亡捣炬,警方通過查閱死者的電腦和手機(jī)慈格,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遥金,“玉大人浴捆,你說我怎么就攤上這事「逍担” “怎么了选泻?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)美莫。 經(jīng)常有香客問我页眯,道長(zhǎng),這世上最難降的妖魔是什么厢呵? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任窝撵,我火速辦了婚禮,結(jié)果婚禮上襟铭,老公的妹妹穿的比我還像新娘碌奉。我一直安慰自己,他們只是感情好寒砖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布赐劣。 她就那樣靜靜地躺著,像睡著了一般哩都。 火紅的嫁衣襯著肌膚如雪魁兼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天漠嵌,我揣著相機(jī)與錄音咐汞,去河邊找鬼。 笑死儒鹿,一個(gè)胖子當(dāng)著我的面吹牛化撕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播挺身,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼侯谁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了章钾?” 一聲冷哼從身側(cè)響起墙贱,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贱傀,沒想到半個(gè)月后惨撇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡府寒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年魁衙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了报腔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡剖淀,死狀恐怖纯蛾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纵隔,我是刑警寧澤翻诉,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站捌刮,受9級(jí)特大地震影響碰煌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绅作,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一芦圾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧俄认,春花似錦个少、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽典尾。三九已至役拴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钾埂,已是汗流浹背河闰。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留褥紫,地道東北人姜性。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像髓考,于是被迫代替她去往敵國(guó)和親部念。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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