UIView的autoresizingMask的目的是什么?

在阅读了关于UIView在SO和developer.apple.com上的autoresizingMask ,我仍然不清楚它的目的是什么。 什么情况下设置这个属性是必要的?

是的,如果您不想手动调整视图的大小,通常需要进行设置。 请注意,它主要用于子视图(即那些不占用整个屏幕的视图),而非应用程序的主视图。

视图通常可能需要resize,如果:

  • 该设备旋转
  • 一个额外的视图(比如一个广告)被添加到视图中,所以现有子视图的可用空间较less。

例如,假设您有一个包含两个button的视图,一个在左上angular,另一个在右上angular。 为了使视图从纵向转换到横向时button变宽,需要将FlexibleLeftMargin设置为右侧button,将FlexibleRightMargin设置为左侧button。

编辑:autoresizingMask也是第一件要看,如果你看到怪异的洞或重叠设备旋转或添加一个新的子视图。 通常这些子视图掩码的适当设置可以让你在两个方向上都能看到一个漂亮的视图,而不必手动设置子视图 – 但通常需要一些试验。

编辑2:(因为这仍然收集upvotes)自动调整掩码现在大多被“自动布局”取代,这允许对视图的大小和位置更灵活的约束。 也就是说,translatesAutoresizingMaskIntoConstraints对于dynamic添加的视图仍然有用。

目的是当UIView由于resize,方向改变,在tableview单元格中显示编辑控制等而导致超级视图改变时,UIView会正确地移动和resize。