2

我有 3 个子视图(、、、UILabelUIImageviewUIButton布置在容器视图上。所有子视图都使用视觉格式语言 (VFL) 进行布局。子视图从前导、顶部边缘等处有填充。子视图的内容是动态的,因此它们的大小一直在变化。我想调整超级视图(容器视图)的大小以完全适合所有子视图。这可以通过自动布局实现吗?我在这里看到了一些链接,这些链接暗示了我无法理解的内在尺寸。有人可以提出更好的方法来实现这一目标。

4

2 回答 2

3

是的,这是可能的。如果您打算根据子视图内容调整超级视图的大小,那么内在内容大小是可行的方法。

曾经非常出色的 Ray Wenderlich 网站有一个很好地涵盖了这一点的教程。在iOS 6 中开始自动布局:第 2/2 部分

内在内容大小

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

标签知道它的宽度和高度,因为它知道已在其上设置的文本的长度,以及该文本的字体大小。对于按钮也是如此,它可能将文本与背景图像和圆角的一些填充结合起来。

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

这被称为固有内容大小,它是自动布局中的一个重要概念。您已经通过按钮看到了它的作用。自动布局会询问您的控件需要多大,并根据该信息布局屏幕。

于 2013-09-06T11:22:09.667 回答
0

有可能的。

就我而言,我想为分段控制提供圆角。为此,我在UIView. 现在我需要根据分段控件的大小调整该容器视图的大小。

我只给出了以下约束,一切都得到了照顾。

(1)选择容器视图并赋予它XY约束。

  • 通往超级视野的领先空间。
  • 超级视图的顶部空间。

(2)选择容器视图并给出Leading| Trailing| Top| Bottom约束。

  • 引领空间走向分段控制。
  • 分段控制的顶部空间。
  • 分段控制的尾随空间。
  • 分段控制的底部空间。

(3)选择分段控制并赋予它HeightWidth约束。

  • 身高:30 //随便
  • 宽度:250 //随便

现在,如果我更改分段控件的高度和宽度,它会自动调整容器视图的大小(分段控件的超级视图)。

于 2017-08-16T07:21:29.830 回答