我有 3 个子视图(、、、UILabel
)UIImageview
要UIButton
布置在容器视图上。所有子视图都使用视觉格式语言 (VFL) 进行布局。子视图从前导、顶部边缘等处有填充。子视图的内容是动态的,因此它们的大小一直在变化。我想调整超级视图(容器视图)的大小以完全适合所有子视图。这可以通过自动布局实现吗?我在这里看到了一些链接,这些链接暗示了我无法理解的内在尺寸。有人可以提出更好的方法来实现这一目标。
2 回答
是的,这是可能的。如果您打算根据子视图内容调整超级视图的大小,那么内在内容大小是可行的方法。
曾经非常出色的 Ray Wenderlich 网站有一个很好地涵盖了这一点的教程。在iOS 6 中开始自动布局:第 2/2 部分:
内在内容大小
在自动布局之前,您总是必须通过设置它们的框架或边界属性或通过在 Interface Builder 中调整它们的大小来告诉按钮和其他控件它们应该有多大。但事实证明,大多数控件完全能够根据其内容确定它们需要多少空间。
标签知道它的宽度和高度,因为它知道已在其上设置的文本的长度,以及该文本的字体大小。对于按钮也是如此,它可能将文本与背景图像和圆角的一些填充结合起来。
分段控件、进度条和大多数其他控件也是如此,尽管有些控件可能只有预定的高度但宽度未知。
这被称为固有内容大小,它是自动布局中的一个重要概念。您已经通过按钮看到了它的作用。自动布局会询问您的控件需要多大,并根据该信息布局屏幕。
有可能的。
就我而言,我想为分段控制提供圆角。为此,我在UIView
. 现在我需要根据分段控件的大小调整该容器视图的大小。
我只给出了以下约束,一切都得到了照顾。
(1)选择容器视图并赋予它X
和Y
约束。
- 通往超级视野的领先空间。
- 超级视图的顶部空间。
(2)选择容器视图并给出Leading
| Trailing
| Top
| Bottom
约束。
- 引领空间走向分段控制。
- 分段控制的顶部空间。
- 分段控制的尾随空间。
- 分段控制的底部空间。
(3)选择分段控制并赋予它Height
和Width
约束。
- 身高:30 //随便
- 宽度:250 //随便
现在,如果我更改分段控件的高度和宽度,它会自动调整容器视图的大小(分段控件的超级视图)。