主要是通过setAutoresizingMask这个属性来设置;
例如:要一个button按钮始终居中显示
首先始化UIButton *btn的坐标位置(如果你想自适应,要使用相对坐标来设置btn的frame;这样开始时不管是横屏还是竖屏,获取的屏幕宽度都是当前屏幕的宽度,后面自适应属性才会正确)
btn.frame = CGRectMake(self.frame.size.width/2-20, 0, 40,30)];//btn在屏幕中间;
[btn setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;//使其左右宽度都自适应即居中
其效果和用IB设置的一样。
参考:例如下面的代码设置和下面图片中在IB中设置的效果是一样的:
[btn setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin];
ios的AutoresizingMask属性
- 在 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;
- 分别解释以上意思。
- UIViewAutoresizingNone就是不自动调整。
- UIViewAutoresizingFlexibleLeftMargin就是自动调整与superView左边的距离,也就是说,与superView右边的距离不变。
- UIViewAutoresizingFlexibleRightMargin就是自动调整与superView的右边距离,也就是说,与superView左边的距离不变。
- UIViewAutoresizingFlexibleTopMargin
- UIViewAutoresizingFlexibleBottomMargin
- UIViewAutoresizingFlexibleWidth
- UIViewAutoresizingFlexibleHeight
- 以上就不多解释了,参照上面的。
- 也可以多个枚举同时设置。如下:
- subView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin |UIViewAutoresizingFlexibleRightMargin;
- 如果有多个,就用“|”关联。
- 还有一个属性就是autoresizesSubviews,此属性的意思就是,是否可以让其subviews自动进行调整,默认状态是YES,就是允许,如果设置成NO,那么subView的autoresizingMask属性失效。