在项目中使用到masonry库进行自动布局,项目需求要定义两种样式,一种为上下两个label居中显示,一种为一个label居中,在布局中全部使用mas_makeConstraints,导致显示文本覆盖和错乱,首先想到的问题不是masonry,而是cell的复用问题,让cell都不重用能解决问题,但是会造成内存的消耗,滑动tableview会有卡顿现象。
搜索资料发现,并不是因为复用的问题导致,而是masonry。
关于Masonry的一些东西
Masonry基础
常见约束的各种类型
1.尺寸:width、height、size
2.边界:left、leading、right、trailing、top、bottom (leading、 trailing与left、right意义相同,一般使用后者)
3.中心点:center、centerX、centerY
4.边界:edges
5.偏移量:offset、insets、sizeOffset、centerOffset
6.priority()约束优先级(0~1000),multipler乘因数, dividedBy除因数
常见约束的三种方法
//这个方法只会添加新的约束
[view mas_makeConstraints:^(MASConstraintMaker *make) {
}];
// 这个方法会将以前的所有约束删掉,添加新的约束
[view mas_remakeConstraints:^(MASConstraintMaker *make) {
}];
// 这个方法将会覆盖以前的某些特定的约束
[view mas_updateConstraints:^(MASConstraintMaker *make) {
}];
*/
tag : 看到block小伙伴们是不是下意识的想到使用 __weak typeof (self) weakSelf = self 来避免循环引用啊,很显然Masonry这么NB的框架怎么可能会出现这么低的撸点呢,笔者经过验证,Masonry内block是局部的引用,block内部引用self不会造成循环引用的,所以骚年们请放心大胆的使用self吧!
Masonry 知识可参考链接:http://www.jianshu.com/p/61ac0daecc0a
将mas_makeConstraints改为mas_remakeConstraints问题解决。
网友评论