使用“自动布局”定位自调整大小的视图

时间:2014-03-22 01:08:01

标签: cocoa ios7 uikit autolayout

我有一个实现sizeThatFits:的自定义视图,偶尔会自行调整大小(根据宽度调整高度)。我想使用自动布局将此视图(“A”)置于其兄弟(“B”)之上,因此我有一个约束,将A的底部设置为等于B的顶部。

当A的框架确实增长和缩小时,B的框架不会随之移动。实现可以与自动布局一起使用的自调整大小视图的推荐方法是什么?

1 个答案:

答案 0 :(得分:2)

您不得手动设置A的大小;这会破坏自动布局(当布局发生时,自动布局会覆盖它)。您必须实现此视图的intrinsicContentSize并使用它来指定视图的大小。现在,当需要调整A时,请调用其invalidateIntrinsicContentSize。这将导致执行布局。将调用intrinsicContentSize,并且约束将起作用(因为布局正在以良好的顺序执行)。

还有一件事:听起来你可能在这里不足以确定约束。你不能只把A放在B之上;你必须说,除了它的大小,它的顶部和左侧(或其中心,水平和/或垂直)。换句话说,一旦你进行自动布局,你必须一直这样做。否则事情不会像你期望的那样发生。