xocde7的autolayout

在viewDidLoad之前, 使用frame改变布局是没有用的, 简单的视图才可以使用autolayout, 稍微复杂写的都要使用代码来编写

获取当前view的宽度不再是使用self.view.frame.size.width, 因为autolayout下获取width是不真实的, 需要[uiscreen mainScreen].bounds.size.width来获取屏幕宽度

[_xibView mas_updateConstraints:^(MASConstraintMaker *make) {

make.top.offset(300);

make.width.offset(100);

make.height.offset(100);

}];

1. autolayout做动画需要调用系统方法

[self.view layoutIfNeeded];

例如:

[UIView animateWithDuration:0.5 animations:^{
// CGRect rect = _xibView.frame;
// rect.origin.y = 300;
// _xibView.frame = rect;
//
[_xibView mas_updateConstraints:^(MASConstraintMaker *make) {
make.top.offset();
make.width.offset();
make.height.offset();
}];
[self.view layoutIfNeeded];
} completion:^(BOOL finished) { }];

2. 没办法知道这个视图的真实尺寸

3. 难以修改或者这个视图的尺寸和位置约束

4. 一个控制器包含多个子控制器

我们需要把子控制器的view加入到当前控制器的view

那么在viewDidLoad方法里设置子控制器的view.frame, 你会发现frame会被重置

应该在viewWillAppear:animated 方法里面设置子控制器的view.frame

5. UITableViewCell问题

用惯了autolayout的uitablviewcell, 如果有一天你不使用autolayout, 记得把UITableViewCell的autolayout勾选给去掉,

不然的话你在cell的layoutsubview方法做出的布局更改是没有效果的

记得clean project才有效果哦

6.UIViewcontroller嵌套子控制器

一般情况下是没有问题的, 但是加入在viewDidLoad方法里加入子控制器,

你就会发现, 你加入的子控制器根本没有显示出来

(分析: 可能是因为, 如果使用autolayout, 进入viewdidload的时候, view的frame并没有被确定, 子控制器的视图的frame必须依靠父控制器的view的frame)

但是父控制的view的frame这个时候恰好有没有办法确定, 所以出现了这种情况!

autolayout的各种坑的更多相关文章

  1. AutoLayout ViewDidAppear 小坑

    在应用AutoLayout的xib中获取某个view的frame时,如果在ViewDidLoad中获取,有可能获取不准,需要在ViewDidAppear中获取,原因是AutoLayout在ViewDi ...

  2. Auto-Layout 的各种坑Unable to create description in descriptionForLayoutAttribute_layoutItem_coefficient. Something is nil'

    我们的很多人现在都在使用autolayout,用着也是非常爽但是有了这个东西以后更爽 很省事,什么都不用自己搞.Xcode完全搞定了,但是我终于为自己的懒惰付出了代价,再iphone4怎么运行怎么cr ...

  3. AutoLayout 的一些坑

    1. 给一个 UIView 加约束,希望它显示在 UITableView 的底部,但是它不显示,它会出现在 UITableView 的顶部. 错误代码: [self.tableView addSubv ...

  4. AutoLayout的坑

    本文投稿文章,作者:MangoMade(简书) AutoLayout非常强大也非常易用,可读性也很强,加上各种第三方AutoLayout库,让你布起局来犹如绷掉链子的狗!根本停不下来!以前的 1 la ...

  5. AutoLayout那些坑

    最近在做一个聊天界面,要适配iOS所有屏幕. 以前的思路是键盘弹出的时候去改table 和输入框的frame. 现在发现和autolayout的约束有冲突. 搞了半天发现需要动态改Constraint ...

  6. 一些Layout的坑。坑死我自己了

    iOS这个东西,初学感觉,还好还好,然后一年之后再来修复一下初学的时候的代码,我只是感觉头很晕- - 别扶我. AutoLayout的坑,明明以前都没有的!!!升了iOS10就突然发现了这个坑,其实也 ...

  7. 一些Layout的坑

    iOS这个东西,初学感觉,还好还好,然后一年之后再来修复一下初学的时候的代码,我只是感觉头很晕- - 别扶我. AutoLayout的坑,明明以前都没有的!!!升了iOS10就突然发现了这个坑,其实也 ...

  8. iOS开发的那些坑

    最近重新拿起了iOS的开发,使用OC和Swift混编,碰到了一些比较棘手的问题,在这里记录下来,方便自己以后或他人不再入坑.这篇文章的内容包含: UITableViewCell的真实结构在iOS的环境 ...

  9. AutoLayout框架Masonry使用心得

    AutoLayout框架Masonry使用心得 字数1769 阅读1481 评论1 喜欢17 我们组分享会上分享了页面布局的一些写法,中途提到了AutoLayout,会后我决定将很久前挖的一个坑给填起 ...

随机推荐

  1. [中英双语] 数学缩写列表 (List of mathematical abbreviations)

    List of mathematical abbreviations From Wikipedia, the free encyclopedia 数学缩写列表 维基百科,自由的百科全书 This ar ...

  2. css009 装饰网站的导航

    css009 装饰网站的导航 1.         选择定义样式的链接 1.连接的状态: A.未访问  a:link{C;} B.已访问  a:visited{ color : red; } C.鼠标 ...

  3. 细说Linux下软件包的安装与管理

    一 源码安装方式      由于linux操作系统开放源代码,因而在其上安装的软件大部分也都是开源软件,例如apache.tomcat.php等软件.开源软件基本都提供源码下载,源码安装的方式:源码安 ...

  4. WebDataGrid设置某行某列的值

    <ig:WebDataGrid ID="grid"  OnRowSelectionChanged="grid_RowSelectionChanged" O ...

  5. 移动端a标签点击图片有阴影处理

    移动端我们在点击页面中的一些图片的时候会出现阴影.处理方法只要给a标签加上 a { -webkit-tap-highlight-color: transparent; -webkit-touch-ca ...

  6. UITableViewCell的separator分隔线设置失效

    // 处理separator -(void)viewDidLayoutSubviews { if ([self.tableView respondsToSelector:@selector(setSe ...

  7. sqlmap注入检测经验0x01

    某日偶遇一SQLInjection Point,MSSQL 2008,已开启显错模式. 马上扔进SQLMap跑,一路顺畅,竟然还是SA的权限,心想运气真好,无论如何都拿定了. 数据库,表,列都列出来了 ...

  8. FMDB 多线程使用

    在App中保持一个FMDatabaseQueue的实例,并在所有的线程中都只使用这一个实例. [FMDatabaseQueue databaseQueueWithPath:path]; FMDatab ...

  9. XSHELL下直接下载文件到本地(Windows)

    xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz 首先你的Ubuntu需要安装rz.sz(如果没有安装请执行以下命令,安装完的请跳过. ...

  10. C语言之strrchr函数

    from:http://blog.csdn.net/hgj125073/article/details/8443912 [FROM MSDN && 百科] 原型:char *strrc ...