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这个时候恰好有没有办法确定, 所以出现了这种情况!

最新文章

  1. CLR:基元类型、引用类型和值类型
  2. 10个值得深思的PHP面试问题
  3. PostgreSQL应用相关问题解决
  4. 【锋利的JQuery-学习笔记】菜单栏及其2级菜单
  5. acm-字符串整理
  6. 简单的FIRST集演示程序
  7. 编写可维护的JS 02
  8. Openjudge-计算概论(A)-单词倒排
  9. Notepad++ V6.9.0 中文绿色便携版
  10. Repeater绑定事件ItemDataBound中获取数据库中数据
  11. 2017-3-2 C# WindowsForm 中label标签居中显示
  12. (中级篇 NettyNIO编解码开发)第七章-java序列化
  13. (高级篇)php结合redis实现高并发下的抢购、秒杀功能
  14. 第三周 IP通信基础回顾
  15. 如何获取java运行时动态生成的class文件?
  16. unittest的使用二——生成基于html的测试报告
  17. STM32L476应用开发之六:电池SOC检测
  18. [No0000197]Windows用户都应该知道的运行命令
  19. kubernetes statefulset kafka 部署后, 外部访问超时问题解决
  20. 集合Arraylist的方法的使用和打印

热门文章

  1. java编程思想-java中的并发(四)
  2. css014 响应式web设计
  3. 记一次DDos攻击--2016/12/8
  4. CURL函数的GET和POST方式的两种写法(实现ajax跨域调用)
  5. 自然语言7_NLTK中文语料库sinica_treebank
  6. JVM 关闭钩子
  7. ERROR 1130 (HY000) Host ‘hostname’ is not allowed to connect to this MySQL server
  8. yourphp的edit,updata,dele
  9. LOD
  10. ubuntu网络设置