Masonry使用及注意
来源:互联网 发布:java项目书籍 编辑:程序博客网 时间:2024/06/16 15:41
方法:
mas_makeConstaints;
创建添加约束
mas_updateConstaints;
更新约束,更新与之前冲突的数值,相同对象(括号里的数值)。
可以添加新的约束,但是若与原来的约束冲突(此冲突是造成的约束错误的冲突),AotuLayout会按一定的规则break Constaint解决冲突,或者是某些版本会crash。mas_remakeConstaint;
清除掉所有的约束重新添加约束。
Reference
约束是对象,也可以通过引用的方式进行修改
[view1 mas_makeConstraints:^(MASConstraintMaker *make) { self.topConstraint = make.top.equalTo(superview.mas_top).with.offset(padding.top); make.left.equalTo(superview.mas_left).with.offset(padding.left); }];
优先级:
有priorityHeight,priorityMedium,priorityLow;
当然,也可以是指定一个数值。
eg:make.left.equlTo(lable.mas_right).with.priorityLow();或者make.left.equlTo(lable.mas_right).with.priorityLow(500);
注意:
- 在添加约束前,要先将约束添加到父元素上(addSubview)。否则,崩溃:因为不添加的话,在AotuLayout的添加约束方法中,toItem的参数是为nil的。
MASLayoutConstraint *layoutConstraint = [MASLayoutConstraint constraintWithItem:firstLayoutItem attribute:firstLayoutAttribute relatedBy:self.layoutRelation toItem:secondLayoutItem attribute:secondLayoutAttribute multiplier:self.layoutMultiplier constant:self.layoutConstant];
- mas_equalTo 和 equalTo的区别:
mas_equalTo多了类型转换,多用于数值元素,其余时两者是没有多大区别,通用。 多属性时,必须用equalTo(eg:make.left.right.equalTo();)
3 关于使用masonry约束完的控件获取frame的问题
问题:使用Masonry约束完的控件在什么时候能获取正确的frame值? 方法:1 如果是在UIView子类中,调用setNeedsLayout后调用layoutIfNeeded。 2 如果是在VC中, 在viewWillAppear 或者viewDidAppear的方法中可获取UIView的frame 原因:使用Masonry对控件创建约束后,虽然可以改变其frame,但是frame的更新并不是实时的,是在layoutsubview执行之后才更新的(frame方式是边执行边更新),如果想要立即更新,需要调用setNeedsLayout后调用layoutIfNeeded方法,从而立即刷新布局,才可以得到控件正确的frame值。或者是在viewWillAppear 或者viewDidAppear的方法中获取,因为此时的view已全部初始化。
阅读全文
0 0
- Masonry使用及注意
- Masonry使用注意篇
- Masonry使用注意篇
- Masonry使用注意
- Masonry使用注意篇
- Masonry使用注意篇
- iOS Masonry使用注意篇
- Masonry注意
- iOS - Masonry简介及使用(very good)
- AutoLayout中一些需要注意的点--结合Masonry使用
- 使用Masonry
- Masonry使用
- Masonry使用
- Masonry使用
- Masonry使用
- Masonry使用
- PageTransformer使用及注意
- Application使用及注意
- windows常用操作设置
- pdf首页缩略图
- java 面试
- Qt资料大全
- java freemark导出word (模板、单张图片、多张图片源码)
- Masonry使用及注意
- 13. Roman to Integer
- eclipse4.5.2版本安装springsource-tool-suite插件成功之后找不到spring的处理办法
- android实现图片与背景的圆角
- c++string类
- Tomcat 部署 HTTPS 证书
- 设计模式之工厂方法模式(Factory Method)
- iOS Xcode中怎么找到Archive出的项目
- sql server windows 登录出现了18456错误