UITableViewCell中的Autolayout UILabel

我正在使用autoLayout和新的,

我有一个UITableView Cell如下所示,UITableViewCell高度是动态的,所以它根据文本有不同的高度。

在此处输入图像描述

在此处输入图像描述

我有两个标签A和B,它们可以有可变长度的文字,但是宽度是固定的,我的UITableViewCell有动态高度 ,所以我怎样才能让它们保持在中心位置并保持与单元格顶部和底部相等的距离,如见于上面两张图片。

要将两个标签放在中心,您必须将它们放在一个视图中,然后将该视图设置在中心。 所以让我们开始并创建一个视图说labelCotainer。 如下所示 在此处输入图像描述

设置除固定高度以外的图片所示的约束,因此最终约束将作为固定尾随空间到超视图,固定宽度并将垂直中心与超视图对齐。

现在在labelContainer视图中创建两个标签,如下图所示。 在此处输入图像描述 现在您的标签将具有约束作为labelA-固定宽度,固定顶部和尾部空间到容器视图,固定底部空间到标签B.和标签B-固定宽度,固定底部和尾部空间到容器视图和固定顶部空间到标签A

现在你所有的约束看起来都像。

在此处输入图像描述

希望这会奏效。 但是不要忘记将标签设置为sizeToFitContent,将行数设置为0

在您的情况下,最好的是创建另一个视图,将两个标签添加为子视图。 约束有点难以设置,错误很容易被仔细阅读。

  1. 创建一个包含两个标签的视图。 我们称之为content 。 您将超视图的约束设置为最右侧位置并垂直居中。 接下来设置content视图的宽度,在您的情况下似乎是固定的。
  2. 创建两个标签并将它们放在content视图中。 我们称它们为top (顶部标签)和bottom (底部标签)。 将它们的左右约束设置为超级视图( content ),并将它们之间的垂直偏移设置为0(或实际需要的任何值)。
  3. 现在有趣的部分:将top顶部约束设置为content顶部,然后双击约束并反转,以便第一个项目是content ,第二个项目是topbottom除了从底部bottom执行相同操作:将底部的底部约束设置为superview,然后反转约束上的对象,使content先是内部,然后是bottom

也可以进行该程序以进行水平对齐。 关键是要告诉superview固定他们的子视图,而不是将子视图固定到他​​们的超级视图。 所以基本上这里发生的是超视图大小将取决于标签大小。 在那之后你可以简单地将superview固定到中心并且它可以工作。 请注意约束中对象的顺序。