mas_makeConstraints && mas_remakeConstraints && mas_updateConstraints 用法与注意事项
mas_makeConstraints && mas_remakeConstraints && mas_updateConstraints 用法与注意事项 字数400 阅读117 评论0 喜欢2
1 mas_makeConstraints 只负责新增约束,Autolayout 不能同时存在两条针对于同一对象约束 否则会报错 注意:在添加约束之前一定要添加到view( [testView addSubview:self.view])上 否则会报错 [testView mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.equalTo(view1.mas_trailing).offset(10); make.bottom.equalTo(view2.mas_bottom).offset(-2); make.height.mas_equalTo(70); make.width.mas_equalTo(50); }]; 2 mas_remakeConstraints 会清除之前的所有约束 仅保留最新的约束 如下:会清除原来的以view1 和view2 为参照的约束 保留 以view3 和view4 为参照的约束 [testView mas_remakeConstraints :^(MASConstraintMaker *make) { make.bottom.equalTo(view3.mas_top).offset(-10); make.centerX.equalTo(view4.mas_centerX); make.height.mas_equalTo(70); make.width.mas_equalTo(50); }]; 3 mas_updateConstraints 针对上面的情况 会更新block中出现的约束 不会导致出现两个相同的约束的情况 注意: 同一个对象 使用mas_updateConstraints 一定要保证 block中要更新的元素是 其使用mas_makeConstraints 设置的约束 如下就是正确的 则不会出现约束冲突问题 [testView mas_updateConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(view1.mas_top).offset(-60); 必须是 同一参照对象(都是以view1)同一参照属性(都是以view1的mas_top) }]; 但是下面的就不对了 就会出现约束冲突 在iOS 7 及其以下会出现由于约束冲突出现的崩溃 [testView mas_updateConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(view2.mas_top).offset(-10); make.centerX.equalTo(view4.mas_centerX); 原因1:不同一参照对象 (原来是view1 现在是view2) 原因2 testView 在 mas_makeConstraints中没有设置 center 所以无法更新 }]; 解决办法:使用mas_remakeConstraints 清除原来的约束 重新设置约束; }];
mas_makeConstraints && mas_remakeConstraints && mas_updateConstraints 用法与注意事项的更多相关文章
- memset函数用法及注意事项
头文件 #include<cstring>// or #include<memory.h> ------------------------------------------ ...
- 【jQuery】praseFloat()方法的用法及注意事项
[jQuery]praseFloat()方法的用法及注意事项 praseFloat(): 用于解析一个字符串,并返回一个浮点数 语法: praseFloat(strin ...
- join()和fromkeys()的用法与注意事项
join()和fromkeys()的用法与注意事项 1.join()的用法与注意事项: join()可以使用集合,列表,字符串的子元素,拼接,下面介绍用法: str.join(data) 2.from ...
- js 之 continue break return 用法及注意事项
1,continue continue有两种用法: 1,continue; 这种用法必须包含在循环里,否则报错,例子: for(var i=0;i<10;i++){ if(i%2===0){ c ...
- JS中document.createElement()用法及注意事项
今天处理了一个日期选择器的ie和ff的兼容问题,本来这种情况就很难找错误,找了好久才把错误定位到js中创建元素的方法document.createElement(),这个方法在ie下支持这样创建元素 ...
- Oracle的trim( )、ltrim( )、rtrim( )三个函数的用法及注意事项
学习一下用法整理trim().ltrim().rtrim()的用法 trim().ltrim().rtrim()三个函数有两个作用,分别是: 一.去除字符串前后空格(基本用法) trim(string ...
- java中使用switch-case的用法及注意事项超全总结
http://m.blog.csdn.net/blog/tianyazaiheruan/8988420 今天陈红军老师在用到switch的时候,这种设计到最基本的内容,可能忘记它的一些基本语法,出现了 ...
- 【Java基础】6、java中使用switch-case的用法及注意事项超全总结
1.switch-case注意事项: switch(A),括号中A的取值只能是整型或者可以转换为整型的数值类型,比如byte.short.int.char.还有枚举:需要强调的是:long和Strin ...
- 【Java面试题】1 Java中使用switch-case的用法及注意事项超全总结
今天在用到switch的时候,这种设计到最基本的内容,可能忘记它的一些基本语法,出现了一些错误,所以即兴从各种资料查询总结了下面的内容,希望可以帮助那些正在困扰switch错误和各种细节问题的朋友! ...
随机推荐
- 已安装php 编译安装 gd库拓展模块
参考资料:http://wenku.baidu.com/link?url=EgXFShYxeJOZSYNQ_7RCBC-6X8OcRRCqVm4qCv49uBk57d6vLBoUpfYdQ-KqJRs ...
- airflow 部署
环境 : ubuntu 14.04 LTS python 2.7 script: 设置环境变量: export AIRFLOW_HOME=~/airflow 安装相关依赖包: sudo apt-get ...
- WebView随学笔记
对于WebView而言我们需要掌握的内容是: /** 学习目标:webView * 1).将WebView加入到应用中 * 2).使用WebView加载页面 * 3).获取网络访问 * 4).在Web ...
- tomcat虚拟路径
目的:减小项目大小,方便部署和资源共享 tomcat/conf/server.xml host 标签中添加 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: ...
- Android笔记:动画
android:fromDegrees 起始的角度度数 android:toDegrees 结束的角度度数,负数表示逆时针,正数表示顺时针.如10圈则比android:fromDegrees大3600 ...
- 网络请求 __ NSURLSession
首先配置into.plist文件 1. 添加 App Transport Security Settings , Type栏自动变为Dictionary 2. 点击左边箭头,使之向下,点击右边加号,添 ...
- 权限管理[Linux]
chown username file,... 改变文件的属主(只有管理员可以使用此命令) -R:修改目录及其内部文件的属主 -reference=somefile_path file,...把想要设 ...
- 【Cocos2d-x for WP8 学习整理】(5)文字显示全整理
学习 Cocos2d-x 有一阵了,现在要做个小东西,第一步就遇到了文字展示的问题,于是想把可能遇到的问题统统整理一下.这一部分也不局限于wp8,全平台应该都是一个解决方案. 先在脑袋里大致想了一下, ...
- parted LVM划分4T磁盘,在线扩展1.5T
磁盘分区: parted /dev/emcpowera (parted) print Model: Unknown (unknown) Disk /dev/emcpowera: 4398GB Se ...
- VisualSVN Server的配置和使用方法(转)
1.为什么要用VisualSVN Server,而不用Subversion? 回答: 因为如果直接使用Subversion,那么在Windows 系统上,要想让它随系统启动,就要封装SVN Serve ...