iOS自适应布局 Masonry与SDAutoLayout相比较 CC_UIHelper

 

这个库可以增加开发效率,可以结合其他库使用。

https://github.com/gwh111/bench_ios

 

首先一波分析,当前比较成熟的有名的库Masonry和SDAutoLayout

看一下别人的分析

https://blog.csdn.net/u012411480/article/details/78034038

查看MyLayout的分析,明显frame是最轻便的,但是由于布局自适应不好,比较复杂,大家都不喜欢用

 

Masonry

https://github.com/SnapKit/Masonry

1.基于NSLayoutConstraint

2.使用方法为block

3.链式编程思想

[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(superview).with.insets(padding);
}];

要说缺点的话,代码有点多?

SDAutoLayout

https://github.com/gsdios/SDAutoLayout

使用动态关联,扩展UIView, 调用getter方法时sd_layout对象生成,此对象作为view对象的布局控制模块, 每次生成一个sd_layout对象,都把它加为super view的autolayoutModelsArray中,需要先写好依赖控件约束,否则无法及时刷新

对于tableview的cell动态计算高度,做朋友圈类似的很好用,个人不喜欢在cell中计算高度,喜欢先将模型算好高度再取,这样会减少滑动卡顿。

要说缺点的话,布局要按顺序?

 

总结一下就是两种布局原理

Masonry的工作原理是基于NSLayoutConstraint的,NSLayoutConstraint说到最最底部就是一个数学公式
SDAutoLayout是基于对frame的设置

此外还研究了https://revealapp.com/ 这个东西,他的原理也是添加约束,

刚开始看以为是直接改代码,结果不是
使用的时候通过断点可以打开一个他格式的工程,在里面调整UI,之后更新,可以看到约束,然后再将约束复制到代码xcode代码里起到调整UI的作用,他工程里的样子就是代码跑起来的样子。


因为要切换到他的工程,也不是特别好用,但在一定程度上也是减少了UI调整。





///

我做的事情是

在.pch文件或需要的地方引入  

#import "CC_Share.h"

然后初始化布局 

//设置基准 效果图的尺寸 比如效果图是iphone6的尺寸
[[CC_UIHelper getInstance]initUIDemoWidth:375 andHeight:667];

初始化好后就可以使用了

这里有两种设备方案:

我们默认采用方案B 所以嵌套getRH和getRFS函数来实现缩放,为什么字体不也用getRH呢?因为字体缩放系数和frame的缩放系数不同,会稍微低一些,如果字体用等比缩放会在小设备看上去适合,但在大屏幕由于放大过多有点像老年机。  

如果直接用数字布局frame,包括masonry 只能在一个尺寸看起来合适。

举个例子 你照着ui效果图iphone6尺寸的做好了 ui检查时用的是6p 跑过来和你说尺寸小了 但实际上在6上正好的 然后你吭哧吭哧改了下 ui很满意回去了 过几天另一个ui拿着6跑过来说和效果图对不上了比效果图尺寸大了 然后你又得改 ui不清楚不同设备尺寸的影响 你是清楚的 这就是为什么要套一层函数的原因(套了函数后面可以全局更改,就算对特定设备做操作也可以) 你无需操心其他设备的适配问题 通过函数都可以微调 只需保证效果图尺寸的模拟器上看起来和效果图一样就可以了。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值