根据子视图调整超级视图的大小
Posted
技术标签:
【中文标题】根据子视图调整超级视图的大小【英文标题】:Resizing the superview according to the subviews 【发布时间】:2013-08-13 16:09:35 【问题描述】:我有 3 个子视图(UILabel
、UIImageview
、UIButton
)要布置在容器视图上。所有子视图都使用视觉格式语言 (VFL) 进行布局。子视图从前导、顶部边缘等处有填充。子视图的内容是动态的,因此它们的大小一直在变化。我想调整超级视图(容器视图)的大小以完全适合所有子视图。这可以通过自动布局实现吗?我在这里看到了一些链接,这些链接暗示了我无法理解的内在尺寸。有人可以提出更好的方法来实现这一点。
【问题讨论】:
【参考方案1】:是的,这是可能的。如果您打算根据子视图内容调整超级视图的大小,那么内在内容大小是可行的方法。
非常出色的 Ray Wenderlich 网站有一个很好地涵盖了这一点的教程。我是Beginning Auto Layout in ios 6: Part 2/2:
内在内容大小
在自动布局之前,您总是必须告诉按钮和其他控件 它们应该有多大,通过设置它们的框架或边界 属性或通过在 Interface Builder 中调整它们的大小。但事实证明 大多数控件完全能够确定多少空间 他们需要,根据他们的内容。
标签知道它的宽度和高度,因为它知道长度 已在其上设置的文本,以及其字体大小 文本。对于按钮也是如此,它可能将文本与 背景图片和圆角的一些填充。
分段控件、进度条和大多数其他控件也是如此 控件,虽然有些可能只有预定的高度,但 宽度未知。
这被称为内在内容大小,它是一个重要的 自动布局中的概念。您已经看到它与 纽扣。自动布局会询问您的控件它们需要多大,并且 根据该信息布置屏幕。
【讨论】:
【参考方案2】:有可能。
就我而言,我想为分段控制提供圆角。为此,我在UIView
中嵌入了分段控制。现在我需要根据分段控件的大小调整该容器视图的大小。
我只给出了以下约束,一切都自己处理好了。
(1) 选择容器视图并为其赋予X
和Y
约束。
(2) 选择容器视图并给出Leading
| Trailing
| Top
| Bottom
约束。
(3) 选择分段控制并给它Height
和Width
约束。
现在,如果我更改分段控件的高度和宽度,它会自动调整容器视图的大小(分段控件的超级视图)。
【讨论】:
以上是关于根据子视图调整超级视图的大小的主要内容,如果未能解决你的问题,请参考以下文章