IOS autoresizingMask详解

由于公司里的项目用的都是绝对布局,而不是相对布局,其布局仅用frame+autoresizingMask构成,因此特地学习一下autoresizingMask的使用方法。

概念

autoresizingMask是UIView持有的一个UIViewAutoresizing类型,该类型的取值决定视图随其父视图的变化而产生怎样的变化。

UIViewAutoresizing枚举取值

UIViewAutoresizing主要有6种状态,如下表所示:

UIViewAutoresizing类型 视图调整情况
UIViewAutoresizingNone(默认) 不会随父视图的改变而改变
UIViewAutoresizingFlexibleLeftMargin 自动调整view与父视图左边距,以保证右边距不变
UIViewAutoresizingFlexibleWidth 自动调整view的宽度,保证左边距和右边距不变
UIViewAutoresizingFlexibleRightMargin 自动调整view与父视图右边距,以保证左边距不变
UIViewAutoresizingFlexibleTopMargin 自动调整view与父视图上边距,以保证下边距不变
UIViewAutoresizingFlexibleHeight 自动调整view的高度,以保证上边距和下边距不变
UIViewAutoresizingFlexibleBottomMargin 自动调整view与父视图的下边距,以保证上边距不变

从上表我们可以总结出,枚举中flexible修饰的单词在父视图发生变化的时候是可以灵活改变的,而其它属性却是固定不变的,需要注意的是,这些属性亦可以复合使用,已达到不同的效果,其中最常用的是

UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight

它代表视图的所有边距都与父视图保持不变

同一轴上多个选项设置的情形

当同一个轴线有多个选项进行设置时,分为以下几种情况(仅以横向轴作为例子):

  • UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin
    在父视图改变的过程中,保持宽度相等,左右边距的比例也保持相等
  • UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleRightMargin
    在父视图改变的过程中,左边距保持相等,宽度与俯视图宽度的比例保持相等
  • UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleLeftMargin
    在父视图改变的过程中,右边距保持相等,宽度与俯视图宽度的比例保持相等
  • UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleLeftMargin
    在父视图改变的过程中,宽度与父视图的宽度保持相等,左右边距的比例也保持相等

你可能感兴趣的:(IOS autoresizingMask详解)