根据子视图调整超级视图的大小

时间:2013-08-13 16:09:35

标签: autolayout

我有3个子视图(UILabelUIImageviewUIButton)要放在容器视图中。所有子视图都使用可视格式语言(VFL)进行布局。子视图具有来自前导,上边缘等的填充。子视图的内容是动态的,因此它们的大小始终在变化。我想调整superview(容器视图)的大小以完全适合所有子视图。这是否可以通过自动布局?我已经看到一些链接在这里建议我无法理解的内在大小。有人可以提出一个更好的方法来实现这一目标。

2 个答案:

答案 0 :(得分:2)

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

卓越的Ray Wenderlich网站有一个很好的教程。这是Beginning Auto Layout in iOS 6: Part 2/2

  

内在内容大小

     

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

     

标签知道它的宽度和高度,因为它知道它的长度   已设置的文本,以及它的字体大小   文本。同样,对于一个按钮,可能会将文本与a组合在一起   背景图片和圆角的一些填充。

     

分段控件,进度条和其他大多数都是如此   控制,虽然有些可能只有一个预定的高度,但有一个   未知的宽度。

     

这被称为内在内容大小,它是一个重要的   自动布局中的概念。你已经看过它了   纽扣。自动布局会询问您的控件需要多大的尺寸   根据该信息布置屏幕。

答案 1 :(得分:0)

有可能。

就我而言,我想给分段控件提供圆角。为此,我在UIView中嵌入了分段控件。现在我被要求根据分段控件的大小调整容器视图的大小。

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

(1)选择容器视图并为其XY约束。

  • 引领超级视野的空间。
  • 超级视图的顶层空间。

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

  • 领导空间进行分段控制。
  • 分段控制的顶层空间。
  • 尾随空格到分段控制。
  • 分区控制的底部空间。

(3)选择分段控件并为其HeightWidth约束。

  • 身高:30 //随便
  • 宽度:250 //无论什么

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