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. java编程思想-java中的并发(三)

    三.终结任务 1. 在阻塞时终结 线程状态 一个线程可以处于以下四种状态之一: 1)新建(new):当线程被创建时,他只会短暂的处于这种状态.此时,他已经分配了必须的系统资源,并执行了初始化.此刻线程 ...

  2. linq 之 Distinct的使用

    public class Product { public string Name { get;set;} public int Code { get; set; } } class ProductC ...

  3. Linux下多线程下载工具 - Axel

    Axel 是 Linux 下一个不错的HTTP/FTP高速下载工具.支持多线程下载.断点续传,且可以从多个地址或者从一个地址的多个连接来下载同一个文件.适合网速不给力时多线程下载提高下载速度.比如在国 ...

  4. centos linux安装telnet 过程及问题(源于内部tomcat网站,外部无法访问)

    首先本地没有telnet客户端及服务器 root权限下安装 yum install telnet yum install telnet-server vi /etc/xinetd.d/telnet 这 ...

  5. eclipse里怎么用命令行输入args

    eclipse中给java应用传args参数的方法如下:1.先写好Java代码,比如文件名为IntArrqy.java:2.在工具栏或菜单上点run as下边有个Run Configuration:3 ...

  6. 数据库备份与恢复(Mysql)

    Mysql备份种类可以分为两种:完全备份和增量备份 完全备份:对某一个时间点上的所有数据或应用进行的一个完全复制. 增量备份:指在一次全备份上或上一次增量备份后,以后每次的备份只需备份与前次相比增加或 ...

  7. Centos系统查看CPU有关信息

    top命令按1,看到几个CPU就代表是几核的. 查看CPU有几颗逻辑cpu,4代表有4个逻辑CPU,同时CPU的型号也打印出了,服务器一般都是至强的CPU [root@svn ~]# cat /pro ...

  8. ajax传输 基础一

    一个简单页面的传输 index.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

  9. vnc服务器配置实例

    系统环境为CentOS.RHEL. 临时需要远程连接,参考:http://www.centoscn.com/CentOS/Intermediate/2013/0917/1641.html 一.安装.启 ...

  10. C#中事件的使用

    C#中事件的使用  http://www.cnblogs.com/wayfarer/archive/2004/04/20/6712.html 用一个例子来说明事件的使用. 创建一个简单的类,名为Fil ...