UIViewAutoresizing

苹果提供了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];
  • 效果图如下:
UIViewAutoresizing_第1张图片
效果图.gif
  • 当设置红色View的宽度随着父视图调整, 距离右边和顶部的距离不变, 在进行横竖屏切换, 就会得到上图的效果 (iPhone不支持屏幕倒立的适配)

以上是通过代码来使用Autoresizing, 在Storyboard和Xib中也提供了相应的方法

  • 有图Autoresizing和AutoLayout冲突, 使用前先取消掉AutoLayout
UIViewAutoresizing_第2张图片
配置.png
  • Autoresizing在可视化界面中的位置
UIViewAutoresizing_第3张图片
位置.png
  • 我们可以通过选中不同的线, 预览右边的效果, 如下图:
UIViewAutoresizing_第4张图片
效果图.gif

你可能感兴趣的:(UIViewAutoresizing)