我有3个子视图(UILabel
,UIImageview
,UIButton
)要放在容器视图中。所有子视图都使用可视格式语言(VFL)进行布局。子视图具有来自前导,上边缘等的填充。子视图的内容是动态的,因此它们的大小始终在变化。我想调整superview(容器视图)的大小以完全适合所有子视图。这是否可以通过自动布局?我已经看到一些链接在这里建议我无法理解的内在大小。有人可以提出一个更好的方法来实现这一目标。
答案 0 :(得分:2)
是的,这是可能的。如果您打算根据子视图内容调整超级视图的大小,那么内在的内容大小就是您的选择。
卓越的Ray Wenderlich网站有一个很好的教程。这是Beginning Auto Layout in iOS 6: Part 2/2:
内在内容大小
在自动布局之前,您总是需要告诉按钮和其他控件 它们应该有多大,无论是通过设置它们的框架还是边界 属性或通过在Interface Builder中调整它们的大小。但事实证明 大多数控件完全能够确定多少空间 他们需要根据他们的内容。
标签知道它的宽度和高度,因为它知道它的长度 已设置的文本,以及它的字体大小 文本。同样,对于一个按钮,可能会将文本与a组合在一起 背景图片和圆角的一些填充。
分段控件,进度条和其他大多数都是如此 控制,虽然有些可能只有一个预定的高度,但有一个 未知的宽度。
这被称为内在内容大小,它是一个重要的 自动布局中的概念。你已经看过它了 纽扣。自动布局会询问您的控件需要多大的尺寸 根据该信息布置屏幕。
答案 1 :(得分:0)
有可能。
就我而言,我想给分段控件提供圆角。为此,我在UIView
中嵌入了分段控件。现在我被要求根据分段控件的大小调整容器视图的大小。
我只给了以下约束,一切都得到了照顾。
(1)选择容器视图并为其X
和Y
约束。
(2)选择容器视图并提供Leading
| Trailing
| Top
| Bottom
约束。
(3)选择分段控件并为其Height
和Width
约束。
现在,如果我更改分段控件的高度和宽度,它会自动调整容器视图的大小(分段控件的超级视图)。