博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
autolayout的各种坑
阅读量:5295 次
发布时间:2019-06-14

本文共 1511 字,大约阅读时间需要 5 分钟。

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(300);                make.width.offset(100);                make.height.offset(100);            }];            [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这个时候恰好有没有办法确定, 所以出现了这种情况!

转载于:https://www.cnblogs.com/apem/p/4573717.html

你可能感兴趣的文章
Android ViewPager 动画效果
查看>>
Android图片缓存之Bitmap详解
查看>>
Android ijkplayer详解使用教程
查看>>
Android UI-仿微信底部导航栏布局
查看>>
Android中pendingIntent的深入理解
查看>>
Android ActionBar
查看>>
Redis集群方案Codis部署手册
查看>>
MySQL 第六天
查看>>
python 笔记一
查看>>
pip和easy_install使用方式
查看>>
数据表与简单java类(一对多的关系)
查看>>
博弈论
查看>>
CSS3 - 如何给图片增加内阴影
查看>>
Redis sentinel & cluster 原理分析
查看>>
OD使用教程3(下) - 调试篇03|解密系列
查看>>
我的工作习惯小结
查看>>
Java反射与泛型
查看>>
关键词挖掘工具_关键词拓展工具集合
查看>>
关于【做一名软件测试工程师,需要具备什么】的我的看法
查看>>
CentOS使用yum安装jdk
查看>>