Autoresizing&Autolayout

使用Autoresizing的几种方式

a、通过storyboard中的故事板

b、使用代码

Autoresizing和Autolayout只能使用一个,所以要想使用Autoresizing,需要将stroyboard中的 Use Auto Layout勾选框取消。

Autoresizing是UIView的属性,一直存在,使用也比较简单,但是没有autolayout那样强大。如果你的界面比较简单,要求的细节没有那么高,那么你完全可以使用autoresizing去进行自动布局。

选中任意的控件,点击它的尺寸检测器,就可以看到Autoresizing了

Autoresizing&Autolayout_第1张图片
设置Autoresizing

外围的四根线 -> 控制当前控件与其父控件之间的间距

例如:设置一个控件到父控件的左边的距离和上边的距离固定

Autoresizing&Autolayout_第2张图片
演示外围四根线的作用

中间两根线 -> 控制子控件是否随父控件的宽or高变化而变化

如果勾选中间的水平方向这条线,则子控件的宽度会随着父控件的宽度变化而变化.

如果勾选中间的垂直方向这条线,则子控件的高度会随着父控件的高度变化而变化.

例如:下图中,红色控件在蓝色控件的内部(蓝色为夫,红色为子)设置红色控件与蓝色控件的上、下、左、右的距离固定,再设置红色控件随着蓝色控件的宽度的变化而变化

Autoresizing&Autolayout_第3张图片
宽度随父控件变化

点击放大按钮让蓝色控件的宽高变大,可以看到效果:

Autoresizing&Autolayout_第4张图片
放大父控件后对应子控件的适应图

勾选垂直线的效果同理可得

使用Code设置Autoresizing

UIViewAutoresizing是一个枚举类型,默认是UIViewAutoresizingNone,也就是不做任何处理,当然你可以根据自己的需要设置枚举值,但是使用Code时要注意:⭐️⭐️⭐️代码设置的方式要记住名字中出现的方位是可变的,这一点和图片设置的方式正好相反!

使用autoresizing建立约束

1、系统默认状态,也就是没有约束

UIViewAutoresizingNone   =   0,

2、本控件与其父控件左边的间距是可变的,也就是说本控件与其父控件右边是固定的

此处设置外部四个线正好与storyboard中相反

UIViewAutoresizingFlexibleLeftMargin  = 1 << 0,

3、当前控件的宽度可变,对应着storyboard中中间的水平线

UIViewAutoresizingFlexibleWidth        = 1 << 1,

4、本控件与其父控件右边的间距是可变的,也就是说本控件与其父控件左边是固定的

UIViewAutoresizingFlexibleRightMargin  = 1 << 2,

5、本控件与其父控件顶部的间距是可变的,也就是说本控件与其父控件底部是固定的

UIViewAutoresizingFlexibleTopMargin    = 1 << 3,

6、当前控件的高度可变,对应着storyboard中中间的垂直的线

UIViewAutoresizingFlexibleHeight      = 1 << 4,

7、本控件与其父控件底部的间距是可变的,也就是说本控件与其父控件顶部是固定的

UIViewAutoresizingFlexibleBottomMargin = 1 << 5

在设置的时候注意:可以同时设置多个约束条件,中间使用连接符: "|" 分隔

例如:

Autoresizing&Autolayout_第5张图片
使用代码设置多种约束的方式

使用Autoresizing的弊端

只能设置当前控件和父控件之间的约束,不能设置当控件与兄弟控件之间的约束

例子:拖入两个view并设置view宽度为130, 要求两个View距离左右和顶部永远是20

Autoresizing&Autolayout_第6张图片
设置autoresizing
Autoresizing&Autolayout_第7张图片
运行在iPhone6上的状态
Autoresizing&Autolayout_第8张图片
运行在iPhone5上的状态

你可能感兴趣的:(Autoresizing&Autolayout)