我正在使用autoLayout和新手,
我有一个UITableView Cell如下所示,UITableViewCell高度是动态的,所以它根据文本有不同的高度。
我有两个标签A和B,它们可以有可变长度的文字,但是宽度是固定的,我的 UITableViewCell有动态高度,所以我怎样才能将它们保持在中心位置并保持平等从上面和下面的单元的距离,如上面的两个图像所示。
答案 0 :(得分:2)
要将两个标签放在中心,您必须将它们放在一个视图中,然后将该视图设置在中心。所以让我们开始并创建一个视图说labelCotainer。如下所示
设置约束,如图所示,除了固定高度,因此最终约束将作为固定尾随空间到超视图,固定宽度并将垂直中心与超视图对齐。
现在在labelContainer视图中创建两个标签,如下图所示。 现在,您的标签将具有约束作为labelA-固定宽度,固定顶部和尾部空间到容器视图,固定底部空间到标签B.和标签B-固定宽度,固定底部和尾随空间到容器视图和固定顶部空间到标签A
现在你的所有约束都会像。
希望这会奏效。 但是不要忘记将标签设置为sizeToFitContent,将行数设置为0
答案 1 :(得分:0)
在您的情况下,最好的方法是创建另一个视图,将两个标签添加为子视图。约束有点难以设置,错误很容易被仔细阅读。
content
。您将超视图的约束设置为最右侧位置并垂直居中。接下来设置content
视图的宽度,在您的情况下似乎是固定的。content
视图中。我们称他们为top
(顶部标签)和bottom
(底部标签)。将左右约束设置为超级视图(content
),并将它们之间的垂直偏移设置为0(或实际需要的任何值)。top
顶部约束设置为content
顶部,然后双击约束并反转,以便第一个项目为content
,第二个项目为{{ 1}}。对top
执行相同的操作,除了从下到下:将bottom
的底部约束设置为superview,然后反转约束上的对象,使bottom
为先,然后{{1} }。此过程也可以进行水平对齐。关键是要告诉superview固定他们的子视图,而不是将子视图固定到他们的超级视图。所以基本上这里发生的是superview大小将取决于标签大小。在那之后你可以简单地将superview固定到中心并且它可以工作。请注意约束中对象的顺序。