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

JJD*_*JJD 19 cocoa resize objective-c autolayout nslayoutconstraint

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

自定义视图

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

jrt*_*ton 26

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

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

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

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

  • 我想1)谢谢你的回答,2)强调数字2和4的重要性.我一直在努力解决这个问题,因为我的子视图(`UIButton`s)显示,但无法点击.事实证明superview没有大小(即0x0),因为缺少超视图约束的间距. (2认同)