如何根据使用Autolayout布局的子视图的大小调整父视图的大小

时间:2012-10-24 14:44:18

标签: objective-c cocoa resize autolayout nslayoutconstraint

我正在准备一个自定义视图,其外观类似于屏幕截图中显示的示例。我在运行时添加所有用户界面组件(标签,文本字段,单选按钮,..)。要定位元素,我使用Autolayout约束。到目前为止,这部分工作正常。

Custom View

元素的数量因环境而异。我想知道如何使用Autolayout约束动态调整父视图(很可能是视图的高度)。因此,视图约束应考虑为当前附加的子视图定义的高度和边距。

2 个答案:

答案 0 :(得分:26)

我已通过以下设置完成此操作:

  • 容器视图没有高度约束
  • 顶部子视图从容器视图顶部开始有一个间距约束
  • 包含的视图之间都有间距约束
  • 底部视图对容器视图底部有间距约束

自动布局系统通过调整容器大小以适应其内容来满足这些约束。

当然,您需要在更改内容时动态设置约束。

答案 1 :(得分:2)

如果你使用的是NSStackView,那么请确保你没有为它的高度和宽度设置约束,并确保所有边都被锚定。

enter image description here

另外,请确保将内容Hugging属性设置为1000。

enter image description here