使用自动布局在superview中水平居中UILabel + UIImageView

时间:2014-02-10 18:01:09

标签: ios ios7 autolayout

我正在进入自动布局,我正在尝试理解如何水平居中多个视图,包括具有内在大小的视图(如UILabel或UIButton)。

例如,我有一个固定宽度为320的自定义视图。在其中,我有两个子视图,一个UILabel和一个UIImageView。我希望UIImageView在UILabel的右边15像素,我希望UILabel和UIImageView一起在superview中水平居中,但我不确定处理它的最佳方法。

我应该将它们放在容器视图中并将容器视图水平居中在superview中吗?如果是这样,如果UILabel具有内在大小,如何确定容器视图的宽度?

或者,我应该计算UILabel的宽度而不是将它们放在容器视图中,并使用该值来发送两个视图的前/后边缘,以便它们在superview中水平居中?

提前感谢您的智慧!

1 个答案:

答案 0 :(得分:4)

使用容器视图是最简单的解决方案。如果您在容器视图及其标签和图像子视图之间创建约束,并且您没有在容器或标签上创建任何明确的宽度约束,那么标签将调整其大小以适合其内容,并且容器将自身调整为适合其子视图。然后,您可以在容器和顶级视图之间创建水平中心约束。