<p>苹果提供了UIViewAutoresizing进行界面适配
- UIView中对应的属性
// UIView是否能够通过autoresizingMask属性进行布局, 默认为YES
@property(nonatomic) BOOL autoresizesSubviews;
// UIViewAutoresizing
@property(nonatomic) UIViewAutoresizing autoresizingMask;
- UIViewAutoresizing枚举内容
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
// 无效果 默认值
UIViewAutoresizingNone = 0,
// 距离父控件左边可以伸缩, 距离右边固定
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
// 宽度跟随父控件的宽度进行伸缩, 根据父控件宽度变化比例, 以相同的比例进行伸缩
UIViewAutoresizingFlexibleWidth = 1 << 1,
// 距离父控件右边可以伸缩, 距离左边固定
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
// 距离父控件顶部可以伸缩, 距离底部固定
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
// 高度跟随父控件的高度进行伸缩, 根据父控件高度变化比例, 以相同比例进行伸缩
UIViewAutoresizingFlexibleHeight = 1 << 4,
// 距离父控件底部可以伸缩, 距离顶部固定
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
- 我们可以通过设置UIView的autoresizingMask属性, 来进行控件的适配
- 下面通过代码举一个事例:
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor redColor];
view.frame = CGRectMake(100, 200, 100, 100);
// 设置红色View的宽度随着父视图调整, 距离右边和顶部的距离不变
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin;
[self.view addSubview:view];
- 效果图如下:
- 当设置红色View的宽度随着父视图调整, 距离右边和顶部的距离不变, 在进行横竖屏切换, 就会得到上图的效果 (iPhone不支持屏幕倒立的适配)
<p>以上是通过代码来使用Autoresizing, 在Storyboard和Xib中也提供了相应的方法
- 有图Autoresizing和AutoLayout冲突, 使用前先取消掉AutoLayout
- Autoresizing在可视化界面中的位置
- 我们可以通过选中不同的线, 预览右边的效果, 如下图: