虽然UIView的UIViewAutoresizing属性已经是个很老的东西了,但是工作中还是经常会用到它做一些简单的布局(毕竟纯代码layout还是有点多),但是在使用的过程中,总觉得和之前博客上看到的一些说法不一致,因此布局中常常会出现一些令自己意外的约束效果。
好多东西都要自己去验证才行。
下面就是自己通过探索得到的结果:
UIViewAutoresizingFlexibleTopMargin 自动适应上边,保持下边距离父视图的距离不变
UIViewAutoresizingFlexibleBottomMargin 自动适应下边,保持上边距离父视图的距离不变
*/
/*
组合使用1:
UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleLeftMargin
这种组合不会使得子视图的宽度变宽,也不会使得子视图距离左边或者右边的距离不变
猜测是按照:保持子视图宽度不变,把父视图宽度增加的量按照子视图左右两边距父视图距离的占比进行分配的。比如父视图宽度375,子视图左右两边距离父视图的距离分别是10,20.那么当父视图的宽度变成667的时候,子视图左边的增量就是(667-375)/3.0 = 97.3 ,那么右边的增量是(667-375)*2/3 = 194.6。
上面计算的是增量,那么最后的结果就是子视图距离左边的距离是107.3 右边的距离是214.6
自己经过代码实验,控制台输出的数据是:107 215
多次实验不同的数值,都是有误差的,虽然有误差,但是大致就是这个数值。所以只是猜测应该这样计算。
*/
*/
好多东西都要自己去验证才行。
下面就是自己通过探索得到的结果:
/* UIViewAutoresizingFlexibleWidth
UIViewAutoresizingFlexibleHeight
自适应宽度(高度) 当父视图改变的时候,更随着改变,并且它改变的宽度(高度)和父视图一样。比如父视图宽增加了100,那该子视图的宽也增加100.
*/
/* UIViewAutoresizingFlexibleRightMargin 自动适应右边,保持左边距离父视图的距离不变
UIViewAutoresizingFlexibleLeftMargin 自动适应左边,保持右边距离父视图的距离不变UIViewAutoresizingFlexibleTopMargin 自动适应上边,保持下边距离父视图的距离不变
UIViewAutoresizingFlexibleBottomMargin 自动适应下边,保持上边距离父视图的距离不变
*/
/*
组合使用1:
UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleLeftMargin
这种组合不会使得子视图的宽度变宽,也不会使得子视图距离左边或者右边的距离不变
猜测是按照:保持子视图宽度不变,把父视图宽度增加的量按照子视图左右两边距父视图距离的占比进行分配的。比如父视图宽度375,子视图左右两边距离父视图的距离分别是10,20.那么当父视图的宽度变成667的时候,子视图左边的增量就是(667-375)/3.0 = 97.3 ,那么右边的增量是(667-375)*2/3 = 194.6。
上面计算的是增量,那么最后的结果就是子视图距离左边的距离是107.3 右边的距离是214.6
自己经过代码实验,控制台输出的数据是:107 215
多次实验不同的数值,都是有误差的,虽然有误差,但是大致就是这个数值。所以只是猜测应该这样计算。
*/
/*
组合使用2:
UIViewAutoresizingFlexibleRightMargin|
UIViewAutoresizingFlexibleLeftMargin|
UIViewAutoresizingFlexibleWidth
这个和上面的情况差不多,只不过是将父视图宽度增加的量,按照他们三个(子视图距离父视图左边的距离,子视图宽度,子视图距离父视图右边的距离)的占比,瓜分了这个增量*/
/*
组合使用3:
UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleWidth
这个的结果是:子视图距离父视图左边的距离不变,但是父视图宽度增加的量,按照它们两个的比例进行了瓜分。