当前位置: 首页 > article >正文

iOS Masonry对包体积的影响

01

Masonry介绍

Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁。Masonry简化了NSLayoutConstraint的使用方式,让我们可以以链式的方式为我们的控件指定约束。

常用接口声明与实现:

e8ef4fb00be2c3b6b7d82f8ea2bee9a4.png

使用方式:

fb62b94e846df4ec47bb1a57c70fdff3.png

02

对包体积的影响

可以看到Masonry的使用是以block为参数进行传递的,那如果项目中大量使用Masonry布局,那就会存在大量block,大家应该知道block实际上就是一个结构体,那这样就会增加代码量进而增加包体积,我们编写Demo进行测试:

4748bc5409e20cc4e356e009eb389db7.jpeg

26d3cedc02cbb01a82ab80b9bd573c70.jpeg

44580d7cf73419ffb275a6af6a3d8b14.jpeg

52197a1094bf4b29180ac2d1a4c76bb0.jpeg

1b8d8606d6be3e402ec52a02aee18b16.jpeg

Frame方式,将layoutWithFrame注释打开,编译运行,查看二进制文件大小,可以看到二进制文件大小为100K:

80743a8cbfac3a7ad9ab17a299ab3bfd.png

Masonry方式,将layoutWithMasonry注释打开,编译运行,查看二进制文件大小,二进制文件大小为103K: 7dad6c5eadf17836671eb1e9d5a2f8a0.jpeg

可以看到二进制文件增加了3K,如果整个工程都用这Masonry这种方式的话那应该会增加几M,包体积就会增加几M。

03

改进方案

那如果还是想用Masonry进行布局,但是用不想使用block怎么办呢?修改Masonry的源码,如下:

8bd95845a56e7e502a295ddb219d9a7f.jpeg

使用方法:

6311678cd6da111a8fe3063e487adc57.png

经过测试这种方式和Masonry原始的使用方式相比,包体积增加不明显。还是用上面的Demo进行测试,将Masonry布局方式改为下面Demo,然后编译运行。

7c1dbfa247ee4c116d000c5f5aa29355.jpeg

4263f09b94565f34a2aa0ada9ffa5984.jpeg

a90e53efb376578396c86826cf65b21a.jpeg

编译运行,查看二进制文件大小,二进制文件大小为101K:

f78f43647670e0e269eb2a0e1965b156.jpeg


http://www.kler.cn/a/455895.html

相关文章:

  • 4.银河麒麟V10(ARM) 离线安装 MySQL
  • 线性直流电流
  • PANet:路径聚合网络——实例分割的创新之路
  • STM32 I2C通信协议
  • 【已解决】图片png转ico格式
  • 虚拟机桥接模式
  • 深入了解 Java 字符串:基础、操作与性能优化
  • 【Java数据结构】LinkedList与链表
  • 电商项目-数据同步解决方案(二)首页广告缓存同步
  • python网络框架——Django、Tornado、Flask和Twisted
  • 【树莓派Pico设备驱动】-LCD1602显示屏I2C方式驱动(基于PCF8574)
  • React 脚手架配置代理完整指南
  • bash shell的条件语句
  • LabVIEW神经肌肉电刺激与记录系统
  • 入职体检尿潜血3+能通过吗,什么原因引起
  • Pandas系列|第二期:Pandas中的数据结构
  • OpenGL笔记(3)
  • Vue.js 高级组件开发:抽象与高性能架构
  • 高质量配音如何影响游戏的受欢迎度
  • 软件耦合类型及相关说明
  • StarRocks 存算分离在得物的降本增效实践
  • mysql,mariadb,postgresql创建用户和授权的命令
  • 10G_ethernet学习记录(1):10G Ethernet PCS/PMA ip的使用
  • 【深度学习基础|pip安装】pip 安装库时,能够自动下载、安装、更新和卸载 Python 包,为基于python语言构建深度学习网络提供了方便。
  • CSS实现无限滚动的列表
  • docker redis安装