iOS自动布局,如何使视图包裹内容?

14

查看层次结构:

- RootView
  - ContainerView
    - Label1
    - Label2

我希望ContainerView总是包含Label1和Label2,当Label1或Label2内容变化时,调整ContainerView的高度。

我的限制条件:

H: [Label1]-[Label2(==Label1)]
V: [Label1]-(>=0)
V: [Label2]-(>=0)

没有异常,但布局模糊不清。


为什么不使用故事板?它更容易可视化。 - Islam
3个回答

9

想一想,

如果你希望高度自适应内容,请将高度设置为“0”,并加上大于等于零的条件 view.height >= 0

如果你希望宽度也是同样的道理...这样视图会保持最小大小


3
请按照以下步骤解决问题:
1. 首先,让标签自动换行。您可以参考Mark的建议在这里
2. 从Storyboard或.xib文件中保存对ContainerView高度约束的引用。
3. 每次更新两个标签的内容后,使用适当的高度更新高度约束。
这对我在类似的情况下起到了作用。还需添加ContainerView上下左右的所有约束以适合RootView。

我知道一个解决方案,就是给ContainerView添加一个低优先级的零高度约束。但我怀疑这是否合适。 - Loveforgeter
@Loveforgeter 这是对我有效并解决了模糊布局问题的方法。唯一需要注意的是,每次标签内容更改时都需要更新高度约束,因此不是100%自动化的。如果您找到其他替代方法,请发布出来。 - mgm

0

在接口构建器中:

  1. 首先将高度设置为一个常量值,例如200(为了方便)。
  2. 设置所有子约束条件(使用等于关系)。
  3. 删除父级的高度(原来是200)。

这对我很有效,IB中没有出现任何错误。因为高度不再存在歧义。

对于宽度也可以采用同样的方式处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接