我正在创建一个自定义UITableViewCell
,但我认为它没有任何区别 - 我的问题不言而喻。
我正在继承其中一个现有的单元格样式,并添加一个视图。超类具有视图(UILabel
),可根据另一个标签中是否有内容调整其在单元格内的垂直位置。如果第二个标签中有内容,则第一个标签在第二个标签和单元格视图顶部之间垂直居中。
如果第二个标签没有任何内容,则第一个标签在单元格视图的顶部和底部之间垂直居中。
我喜欢这种行为。我正在尝试在第一个标签旁边添加第三个标签。我使用了autolayout约束来将新标签固定在第一个标签附近,如下所示:
[NSLayoutConstraint constraintsWithVisualFormat:@"[firstLabel]-(5)-[thirdLabel]" options:0 metrics:nil views:views];
这工作正常,但我无法弄清楚如何做与垂直位置类似的事情。理想情况下,我会“固定”第三个标签,使其始终与第一个标签处于同一垂直对齐状态,无论是什么,但我不知道如何用视觉格式语言表达它。
作为替代方案,弄清楚如何复制第一个标签的行为(根据第二个标签的存在或缺少来调整它的垂直对齐)。
当第二个标签 存在时,此约束可以正确地垂直对齐新标签,但如果第二个标签在该特定单元格上为空,则它不会执行任何操作:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:[thirdLabel][secondLabel]" options:0 metrics:nil views:views];
如何表达此布局约束?
答案 0 :(得分:2)
可视格式语言最适合用于创建一个接一个地对齐项目的约束。
对于更复杂的布局,例如您尝试构建的垂直中心对齐,您应该使用NSLayoutConstraint
的{{1}}方法。
以下是您可以做的事情:
constraintWithItem:[...].
希望这有帮助,