前面写了一篇文章,介绍FlexLib这个布局库,见IOS新一代界面开发利器 —— FlexLib。然后有很多网友问相比于Masonry有什么优势,今天就简单对比一下两者优劣。

Masonry是一个非常优秀的开源库,可以说是Masonry的出现拯救了Autolayout,其简洁的语法赢得了大量美誉。但是随着众多基于Flexbox布局库的出现(如React Native、Weex、Texture),autolayout本身越来越显得难以适应时代的需要。下面从几个方面简单分析一下:

Autolayout性能问题

Frame / Auto Layout / FlexBox 的性能对比如下:

详细的Autolayout评测见这篇文章:从 Auto Layout 的布局算法谈性能

总体而言,当页面中的窗口数量达到30个以上的时候,布局所需要的时间即可达到16ms,也就是当视图比较多的时候,autolayout会有严重的性能问题。而使用flexbox模型,其布局性能非常接近于使用frame方式布局。

Masonry仅支持布局属性的设置

对于一个页面而言,除了需要设置控件的布局属性,还需要设置控件的视图属性,包括背景色、字号、文字等。而这些都用代码来设置将直接导致代码冗长,可读性差,不容易修改等。

使用Masonry写的代码

[self.textView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self).mas_offset(7);
make.bottom.mas_equalTo(self).mas_offset(-7);
make.left.mas_equalTo(self.voiceButton.mas_right).mas_offset(4);
make.right.mas_equalTo(self.emojiButton.mas_left).mas_offset(-4);
make.height.mas_equalTo(HEIGHT_CHATBAR_TEXTVIEW);
}];
self.textView.font = [UIFont systemFontOfSize:16];
self.textView.color = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.6];
self.textView.text = @"测试文本";

FlexLib通过xml配置文件

<UITextView name="_textView" layout="top:7,bottom:7,left:4,right:4" attr="fontSize:14,color:#333333,text:测试文本"/>

可以看出,通过xml配置起来优势相当明显

每次界面的改动都需要重新编译运行

因为整个布局都使用代码来编写,只要设计有一点点改动,都需要修改代码、编译、重新运行,这对于小项目还可以接受,而对稍大一些的项目所花费的时间则难以想象。

使用xml配置则可以运行时修改xml布局,然后即时刷新界面,如图:

适配iPhone X的代价

iPhoneX一出,让使用autolayout以及masonry的每个界面都需要进行适配,其工作量相当之大。

对比之下,使用FlexLib则无需额外对iPhoneX进行适配,另外如果框架提供的safeArea不能满足需求,也可以非常方便的通过重载进行适配。

使用FlexLib适配iPhoneX的效果图

除了以上几点以外,FlexLib还有其他特性,包括输入框自动躲避键盘、支持预定义风格、国际化支持、tablecell高度自动计算等。

因此,您是否还打算继续使用Masonry呢?

是时候放弃Masonry了相关推荐

  1. java cms 垃圾回收_Java 9 或将放弃 CMS(并发标记清除垃圾收集器)

    原标题:Java 9 或将放弃 CMS(并发标记清除垃圾收集器) 近日,JEP 291 再次被 Java 开发团队提上日程.先来看看该 JEP. JEP 291: Deprecate the Conc ...

  2. iOS 自动布局框架 – Masonry 详解

    来源:伯乐在线 - 刘小壮 如有好文章投稿,请点击 → 这里了解详情 如需转载,发送「转载」二字查看说明 目前iOS开发中大多数页面都已经开始使用Interface Builder的方式进行UI开发了 ...

  3. 当你累了,准备放弃时,看看这个吧!!!

    当你累了,准备放弃时,看看这个吧!!! 在朋友空间看到这篇文章,送给所有还在坚持的朋友~~ 每个人都背负着一个沉重的十字架,在缓慢而艰难地朝着目的地前进. 途中,有一个人忽然停了下来. 他心想:这个十 ...

  4. 初级开发人员的缺点_这是我想放弃初级开发人员时所做的事情

    初级开发人员的缺点 Coding is hard. Really hard. There are times when you'll think "this is amazing! I lo ...

  5. Google排名第一的技术,引数十万人关注!网友:差点我就放弃了!

    毋庸置疑,Python越来越被认可为程序员新时代的风口语言.无论是刚入门的程序员,还是年薪百万的 BATJ 的大牛都无可否认:Python的应用能力是成为一名码农大神的必要项. 所以,很多程序员把Py ...

  6. AI一分钟 | 程维成立滴滴股权投资公司;特斯拉董事会决定放弃私有化

    ▌滴滴 CEO 程维成立滴滴股权投资公司,出任总经理 8 月 27 日午间消息,滴滴 CEO 程维近日出资成立滴滴(厦门)股权投资有限公司,主营股权投资以及相关咨询服务.工商资料显示,滴滴(厦门)股权 ...

  7. AI从入门到放弃2:CNN的导火索,用MLP做图像分类识别?

    来源 | 腾讯知乎专栏 作者 | AIoys(腾讯员工,后台工程师) 项目文档和代码在此:github项目地址: https://github.com/zsysuper/AI_Notes ▌一.前言 ...

  8. 一分钟AI | Numpy将放弃Python2.7全面支持Python3,柯洁苦战终结AI41连胜深夜失眠发文感慨

    一分钟AI 柯洁深夜发微博,庆祝自己击败已经41连胜的新锐围棋AI"符合预期" <时代>杂志评选 2017 年最佳发明榜单发布:iPhone X,特斯拉Model 3, ...

  9. 终于放弃了Maven,我选择用Gradle!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者 :乐百川 本文来源:toutiao.com/i682 ...

最新文章

  1. python 定时任务
  2. FBI发警告:留意联网汽车被黑客攻击风险
  3. sharding jdbc根据年月分表
  4. crontab定时任务运行
  5. 一维二维_更高效的一维、二维材料过渡态搜索
  6. 5.spiders(文件夹)
  7. 回溯算法(Backtracking Algorithm)之八皇后问题
  8. 7-113 堆栈操作合法性 (20 分)
  9. java实现文件夹复制_Java实现文件夹复制
  10. 字节跳动算法工程师总结:java资料文件
  11. mgo02_mongodb启动警告处理
  12. Selenium实战应用——实现知到智慧树自动播放课程
  13. SPSS学习笔记(二)T检验
  14. 编译原理-词法分析-上下文无关文法
  15. 51单片机外部中断使用示例程序
  16. 清华大学计算机科学学院刘钊,姚 骏-清华大学生命学院
  17. ssm+boot+thymeleaf博客系统完成总结
  18. 全球及中国婴儿奶瓶架行业发展趋势预测及投资前景展望报告2022-2028年
  19. 分享几个不错的流程图制作网站
  20. 悬浮窗——判断及跳转(包含OPPO 5.1 系统等)

热门文章

  1. 几个主要的概念常用缓存注解#
  2. ilock型计算机联锁的应用,电磁兼容设计在iLOCK型计算机联锁系统机柜中的应用...
  3. mysql 查询一天中每个小时的数据量
  4. win10无法登陆SSG进行WEB UI管理
  5. 今天分享一个自动发信息小助手
  6. 全自动咖啡机怎么使用,教你几招轻松上手制作美味现磨咖啡
  7. 5.3设置图片背景样式
  8. 无法从带有索引像素格式的图像创建graphics对象 问题的解决方案。
  9. SIFT特征提取(PCV、VLFeat)的环境配置、常见Bug及修复方案
  10. 计算机会比人类更聪明吗 英语课文,自考英语二(下)课文翻译之unit15