UIView的autoresizingMask的目的是什么?

时间:2011-09-07 16:36:41

标签: ios uiview autoresizingmask

在SO上阅读UIView的{​​{1}}和developer.apple.com后,我仍然不清楚其目的是什么。在什么情况下需要设置此属性?

2 个答案:

答案 0 :(得分:23)

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

视图通常可能需要调整大小,如果:

  • 旋转设备
  • 在视图中添加了一个额外的视图(例如广告),因此现有的子视图的可用空间更少。

例如,假设您有一个带有两个按钮的视图,一个位于左上角,另一个位于右上角。为了在视图从纵向转换为横向时按钮变宽,您需要将FlexibleLeftMargin设置为右侧按钮,将FlexibleRightMargin设置为左侧按钮。

编辑:如果在旋转设备或添加新的子视图时看到奇怪的孔或重叠,则首先要查看autoresizingMask。通常,为子视图正确设置这些蒙版可以在两个方向上获得漂亮的视图,而无需手动布局子视图 - 但通常需要进行一些实验。

Edit2 :(因为这仍然是收集投票)现在,自动调整掩码大多被“自动布局”取代,这允许对视图的大小和位置进行更灵活的约束。话虽这么说,translatesAutoresizingMaskIntoConstraints仍然偶尔对动态添加的视图有用。

答案 1 :(得分:4)

目的是UIView在超级视图由于调整大小,方向更改,在tableview单元格中显示编辑控件等而发生更改时正确地移动和调整大小等。