定义内在内容大小

在自动布局之前,你总是必须通过设置框架或边界属性或通过在 Interface Builder 中调整它们来告诉按钮和其他控件应该有多大。但事实证明,大多数控件完全能够根据内容确定所需的空间。

一个标签,知道它有多宽高的,因为它知道已在其上设置文本的长度,以及对该文本的字体大小。同样,对于一个按钮,可能会将文本与背景图像和一些填充相结合。

对于分段控件,进度条和大多数其他控件也是如此,尽管有些控件可能只有预定高度但未知宽度。

这被称为内在内容大小,它是自动布局中的一个重要概念。自动布局会询问你的控件需要多大,并根据该信息布置屏幕。

通常你想使用 intrinsic content size,但在某些情况下你可能不想这样做。你可以通过在控件上设置显式宽度或高度约束来防止这种情况。

想象一下,如果图像比屏幕大得多,在 UIImageView 上设置图像时会发生什么。你通常希望为图像视图提供固定的宽度和高度并缩放内容,除非你希望视图调整为图像的尺寸。

参考: https//www.raywenderlich.com/115444/auto-layout-tutorial-in-ios-9-part-2-constraints