当UIView大小改变时,有没有办法自动更新约束?

时间:2014-05-05 08:34:52

标签: ios objective-c uiview autolayout

视图有2个垂直堆叠的子视图。这两个视图中的每一个都具有动态高度:其中一个从web加载图像,其高度未确定;另一个是加载一些html的Web视图,并在加载完成后计算其高度。

我想要类似于HTML的文档流来布局2个子视图,所以我使用iOS自动布局。但是有不便之处:

  1. 我必须在“界面”构建器中为两个视图设置固定高度约束,并且不能在IB中删除此约束。
  2. 当子视图的高度可用时(对于webview,使用sizeToFit),我必须删除IB中定义的固定高度约束,并添加另一个具有实际高度的高度约束(view.frame.size.height)。
  3. 这很尴尬。有没有办法在尺寸变化时自动重新布局视图?

2 个答案:

答案 0 :(得分:2)

我认为你错过了自动布局如何工作的基本概念。如果您有两个垂直边缘到边缘的视图,那么您根本不应设置高度约束,而是为两个视图之间的距离设置约束(如果它们是边对边的那么可以然后,当您调整动态视图的大小时,另一个视图将根据其约束适当调整大小。

这里需要记住的是,自动布局可以完成所有繁重的工作,但是如果你设置了固定的高度限制并改变了垂直尺寸,那么它就不会接管,所以改为对两者之间的垂直距离设置约束。观点,你会得到你想要的。

答案 1 :(得分:0)

您不必删除IB中定义的约束 只需选中占位符复选框即可。

enter image description here