一、那么,接下来,我们就给大家介绍一下,如何通过代码,来实现这个AutoLayout
1.咱们之前是不是都是通过,storyboard、来拖、拉、拽、的方式实现的吧
现在给大家介绍一下,如何通过代码,来实现
在继续介绍,如何通过代码,来实现AutoLayout之前呢,
我们先要给大家补充一个知识,就是我们添加约束的时候,是把这个约束添加给谁了
这个知识,要给大家补充一下
好,来看
那么,我先把这个,给大家关掉,来,看一下
我新建一个项目
选择File-New-Project
选择这个Single View Application
为一个控件,增加约束,这个约束,是增加给谁了,这个要注意
Name:009添加约束规则
注意看,打开我们这个storyboard,我在这里拽一个什么啊,拽一个按钮吧
拽一个按钮
拽一个按钮,然后呢,设一下这个按钮的背景色
设一个红色吧
好,然后,接下来,我是不是要给这个按钮,增加约束,
这个按钮,现在是不是一个约束也没有
好,我现在给这个按钮增加一下约束,约束一下这个按钮的高和宽
约束按钮的宽,是100
约束按钮的高,是100
然后呢,点一下增加
增加两个约束,好,一增加
然后呢,这个按钮,是不是先给它增加了一个高和宽了吧
先别给它去掉那个错误的警告
注意,刚才我仅仅是给按钮约束了一个高和宽
然后,我们看一下,左边,这个场景里面,Scene,里面
右边这个控制器,叫一个故事板,左边这个叫一个场景
一个故事、一个场景
OK,这个场景,场景里面,看一下这个按钮,按钮里面,是不是有一个Constraints了
约束吧,约束里面呢
是不是有一个高、和宽、这一个约束
也就是说,当我们为一个控件,增加一个约束的时候,
如果说,这个约束,不依赖于其他控件的时候,
什么叫不依赖于其他控件的时候,
你设置这个控件的宽、和高,就是写了吧,高就是写了100,
这个时候,不依赖于其他控件吧
比如说,你设置这个控件的高,等于别的控件的高
这个时候,你设置这个控件的高,是不是依赖于别的控件了
或者说,你设置这个控件,距离父控件左边距离,这个时候,这个约束,是不是也依赖于父控件了,要用到父控件啊
就是说,当你为控件设置一个约束,不依赖于别的控件的时候,这个时候,这个约束是,增加到这个控件自己上
是不是增加到这个控件自己上的约束啊
那么,这是第一个
1)当设置一个约束,不依赖于任何其他控件的时候,这个约束,会增加到当前控件的自己身上
OK,这是我们第一个要说的
看看
OK,就是这点,
如果添加的约束和其他控件没有关系,就会添加到自己身上
意思就是说,你这个控件,增加这个约束,不依赖于任何别的控件,
自己就可以写完,比如100,100,高、和宽,都是100
不依赖于别的控件,那么它这个约束,就会增加到控件自己身上
这是第一个
就相当于我们刚才这样,增加高和宽,都是写的100,不依赖于别的控件,那么这个约束,就会增加到这个控件自己的身上
好,再看一下
2)比如说,让这个按钮,注意看,让这个按钮,让它,水平居中对齐、垂直居中对齐
点击增加
注意,这个Constraints
水平居中对齐、垂直居中对齐
注意,这个水平居中对齐、垂直居中对齐
这个约束,是增加到哪儿了
增加到这个按钮的父控件上了吧
是不是,也就是说,当这个约束,是相对于
当设置子控件的一个约束,这个约束,要用到父控件的某个值
这个时候,这个约束,就会增加到,父控件上
OK,把这个警告解决一下
解决,Fix Misplacement
OK
好,这是我们的第二个情况
OK,看一下,
2)如果是父子关系,设置子控件的约束,约束会添加到父控件上
并不会增加到这个子控件上
只有一种情况,会增加到子控件上,就是设置这个控件的约束的时候,它不依赖于任何的控件,自己就能设置,只有这种情况,这个约束,会增加到控件自己身上
那么,比如说,其他情况,
1)第一种情况,设置这个控件的约束,和父控件有关,是父子关系的时候,这个约束,会添加到父控件身上
2)第二种情况,如果是父子关系,设置子控件的约束,约束会添加到父控件上
3)OK,那么,接下来,我们再看第三个
我这里,再来一个按钮
再来一个按钮,
这个按钮
这个按钮叫做Button01
我设置这个按钮(Button01)和这个红色的按钮,让它俩的高和宽相等,让它俩的宽和高,等宽、等高
点击增加
设完以后,注意看,这儿会加东西吗
走一个
增加了没,加了吧
也就是说,当你设置两个兄弟之间,有相互依赖关系的时候,这个依赖关系,也会添加到这两个兄弟的父控件上
这是我们的哪幅图啊,
就是我们的这幅图
当设置两个兄弟之间的依赖的时候,这个兄弟之间的依赖约束,也会添加到父控件上
同一个层级间的约束关系,都会添加到父控件上