UIView 的 autoresizingMask 理解

enum {
   UIViewAutoresizingNone                 = 0,
   UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
   UIViewAutoresizingFlexibleWidth        = 1 << 1,
   UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
   UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
   UIViewAutoresizingFlexibleHeight       = 1 << 4,
   UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};

typedef NSUInteger UIViewAutoresizing;

就这么几个属性,如果在xib或者stroyboard中,配置的话,有个动画在指使效果.还算比较清楚,用代码写的话其实稍微弄清楚每个值代表的意义也就清楚了.


none当然就是不变化了.

leftmargin是指,视图的左边缘,在父视图中的距离是可以调整的.,不设置的话就代表所谓的坐标X,不变.

rightmargin就是右边缘到父视图右边的距离是可以调整的.

UIViewAutoresizingFlexibleWidth:代表整个视图的宽度是可以改变的.


最常用的,视图始终填充整个父视图,只需要UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight就行了.


像按钮之类的控件,通常就不要拉伸本身的大小,就使用margin来设置,靠左,靠右,靠上,靠下.


以前的程序都很偷懒,不想做旋转,其实大部分还是比较简单的通过这个属性就能完成.复杂的就用通过以下两个办法来调整具体的坐标了:

1.

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

这个在viewcontroller中重新,当视图旋转的时候会调用.然后手工设置子视图的坐标.

2.

- (void)layoutSubviews

这个就要在view中实现这个方法来,手动调整子视图的布局.由于通常我们使用viewcontroller.view,这个view并没有写出来.要操作,就需要自己实现一个view来干这事.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值