子视图中的Autolayout多行UILabel;第一次布局传递

时间:2016-03-04 02:08:36

标签: ios swift autolayout uilabel

我已经阅读了许多关于如何使多行自动布局标签工作的问题和教程,并且有几个解决方案似乎有效,但只是第二次显示我的子视图。

我有一个全屏视图控制器,它有一个垂直居中的容器。子视图控制器交换进出容器,容器高度伸展/收缩以适应给定子视图的高度。我的大多数子视图都有一个固定的高度,但其中一个有一个标签,其高度(因此子视图高度)基于标签内容。所有子视图都有从上到下的约束。我试过了:

  1. 使用在UILabel方法中设置preferredMaxLayoutWidth的自定义layoutSubviews
  2. 使用自定义UILabel在设置边界时更新其约束,并在约束更新时设置其preferredMaxLayoutWidth
  3. 在子视图控制器的UILabel方法中设置preferredMaxLayoutWidth的{​​{1}}并致电viewDidLayoutSubviews
  4. 所有这些方法都有效,但只有第二时间显示子视图。第一次显示子视图时,标签始终被截断。我可以通过将大于或等于高度约束设置为足够大的值来使标签永不截断,但这不是我想要的,因为当由于额外填充而导致文本较少时,我的子视图不再显示为垂直居中

    那么,如何让子视图在第一次显示时正确更新它的高度?

    编辑:

    这是我正在使用的子视图:

    这是父视图中的容器:

0 个答案:

没有答案