UIViewAutoresizing 各个类型的探索

虽然UIView的UIViewAutoresizing属性已经是个很老的东西了,但是工作中还是经常会用到它做一些简单的布局(毕竟纯代码layout还是有点多),但是在使用的过程中,总觉得和之前博客上看到的一些说法不一致,因此布局中常常会出现一些令自己意外的约束效果。
好多东西都要自己去验证才行。
下面就是自己通过探索得到的结果:

/* 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
   
 这个的结果是:子视图距离父视图左边的距离不变,但是父视图宽度增加的量,按照它们两个的比例进行了瓜分

高度方面的应该和这个一样,就不写了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值