登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

MyLayout提升界面布局性能以及增多对国际化的支持

[复制链接]
来自: 欧阳大哥2013 分类: iOS精品源码 上传时间: 2017-6-13 17:24:22
Tag:

项目介绍:

iOS界面布局库MyLayoutTangramKit已经完成新版本的升级并且已经更新到github和cocoapod上面。这次新版本更新的两个大亮点是对界面布局的性能进行了大幅度的提升和对阿拉伯国家需要进行RTL方向布局的支持

性能的提升。

多说无益,图表最具说服力

下面的图表是在iPhone6真机设备上用MyLayout和frame以及AutoLayout进行构建和布局的时间对比表格,里面的数据是每个视图的构建时间和布局时间,单位都是毫秒:

视图的构建和布局时间

构建时间FrameMyLayoutAutoLayoutMasonryUIStackView
TGLinearLayout0.080.1640.2190.3040.131
TGFrameLayout0.050.1490.2090.2730.131
TGRelativeLayout0.0790.1820.1160.3590.131
TGFlowLayout0.080.1070.1980.2580.131
TGFloatLayout0.0440.1480.2030.2500.131
布局时间FrameMyLayoutAutoLayoutMasonryUIStackView
TGLinearLayout00.0490.2690.2690.272
TGFrameLayout00.0420.2430.2430.272
TGRelativeLayout00.0680.2740.2740.272
TGFlowLayout00.0360.2790.2790.272
TGFloatLayout00.0550.2080.2080.272

下面的表格则是新老版本的性能提升对比图:

构建时间1.3.61.3.5提升%布局时间1.3.61.3.5提升%
MyLinearLayout0.1640.21128%0.0490.160226%
MyFrameLayout0.1490.21242%0.0420.142234%
MyRelativeLayout0.1820.21518%0.0680.137101%
MyFlowLayout0.1070.14637%0.0360.111210%
MyFloatLayout0.1480.147-0.48%0.0550.117113%

从上面的表格中我们得出如下结论:

  1. 用frame构建视图用时最少,平均每个视图花费0.068ms。当视图的frame指定后就不再需要布局视图了,所以布局时间几乎是0。

  2. 当用AutoLayout进行布局时每个子视图的平均构建时长约为0.189ms,而Masonry因为是对AutoLayout的封装所以平均构建时长约为0.289ms。在布局时则因为都是使用了AutoLayout所以是相等的,大概花费0.255ms左右。

  3. MyLayout的实现因为是对frame的封装,所以无论是构建时长和布局时长都要优于AutoLayout,但低于原始的frame方法。MyLayout的平均构建时长约0.150ms,比frame构建要多花费2.2倍的时间;而AutoLayout的平均构建时长是MyLayout的1.26倍;Masonry的平均构建时长则是MyLayout的1.9倍。

  4. MyLayout的平均布局时长是0.05ms, 而AutoLayout的布局时长则是MyLayout的5倍。

  5. UIStackView的构建时长要稍微优于MyLayout的线性布局MyLinearLayout.但是布局时长则是MyLinearLayout的5.5倍。

  6. MyLayout中流式布局MyFlowLayout的构建时长和布局时长最小,而相对布局的构建和布局时长最长。

  7. 可以看出随着视图数量的增加Frame和MyLayout的时长都是按线性增长的,而AutoLayout的是越来越趋向非线性增长了。

  8. 如果我们使用SB或者XIB进行布局时那么整个布局的时长还要包括对XML格式文件的解析的时间因此,虽然SB或者XIB进行布局方便但是消耗的时间是最多的。

RTL的支持。

所谓RTL方向布局就是right to left direction。也就是界面中的元素总是按从右往左的方向进行排列布局,大部分国家的书写以及排列习惯都是从左往右,是LTR方向布局,而对于一些阿拉伯国家,文字的书写以及展示的顺序都是从右往左方向的,下面的两张图片展示了阿拉伯国家的界面展示效果。

RTL布局

RTL布局
苹果在iOS9中对RTL进行了全面的支持。而MyLayoutTangramKit这次新升级的版本对RTL的支持可是没有任何版本限制的。为了实现对RTL的支持我们在水平方向提出了leading和trailing的概念,中文就是理解为头部和尾部。当您是LTR方向布局时leading就是代表的左边而trailing则是代表的右边;而当您是RTL方向布局时leading就代表的是右边而trailing则代表的是左边。通过这个新定义的概念您就不需要担心在进行国际化布局时指定方向了。下面是MyLayout中对RTL支持的一些效果。

MyLayout对RTL的支持

为了实现RTL的支持您只需要将MyLayout的一个全局属性isRTL设置为YES或者NO就行了,通过这个属性可以很方便的切换布局的方向了。

最后欢迎大家关注我的iOS界面布局库:
MyLayout: https://github.com/youngsoft/MyLinearLayout
TangramKit: https://github.com/youngsoft/TangramKit

相关源码推荐:

我来说两句
*滑动验证:
所有评论(5)
BlueManlove 2017-6-14 10:27:55
感谢分享,楼主V5~
回复
kengsir 2017-6-14 10:28:02
感谢大神分享,必须顶!
回复
phoiu 2017-6-14 10:28:30
内容很好,棒棒哒
回复
littleRed 2017-6-14 10:29:11
不错不错,楼主辛苦了。。。
回复
AlonMessi 2017-6-14 10:29:44
好好 学习了 确实不错
回复
hellokenken 2017-6-14 10:32:44
我是来学习的
回复
code4app热心网友 2017-6-15 09:01:10
精华内容,楼主V5!
回复
code4app热心网友 2017-6-15 09:40:09
楼主威武啊,Code4App有你更给力!
回复
code4app热心网友 2017-6-15 15:01:43
感谢分享,Code4App有你更精彩:)
回复
提取码:  下载次数:20 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
1272 1 20
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表