我的UITableViewCell中有两个标签,并且设置了约束,使它们位于单元格的中心:

func setConsraints() {

    // horizontal constraints

    // vertical constraints
    mainLabel.centerYAnchor.constraint(equalTo: contentView.centerYAnchor, constant: someVariable).isActive = true
    infoLabel.centerYAnchor.constraint(equalTo: contentView.centerYAnchor, constant: -someVariable).isActive = true
}

ios - 标签之间相对于 View 中心的最小间距-LMLPHP(所需结果)

但是因为常量是一个变量,所以有时看起来像:

ios - 标签之间相对于 View 中心的最小间距-LMLPHP(不需要的结果)

我尝试在mainLabelinfoLabel之间添加一个约束,并按优先级进行播放,但这些解决方案均无法正常工作。

题:

如何为这两个标签添加“最小”约束,以使它们不会彼此重叠,而是同时将其居中到UITableViewCell并保持一定距离?

最佳答案

您是否考虑过使用替代

func setConsraints() {

    // horizontal constraints

    // vertical constraints
    mainLabel.bottomAnchor.constraint(equalTo: contentView.centerYAnchor, constant: -someVariable).isActive = true
    infoLabel.topAnchor.constraint(equalTo: contentView.centerYAnchor, constant: someVariable).isActive = true
}

否则,您需要获取字符串的高度并设置相对于其的中心锚点。有一些字符串扩展名,可让您获取特定宽度的字符串高度,例如answer。您可以使用它来获取标签的高度,然后在方法中将其一半添加到someVariable中。

编辑:我注意到您已经为mainLabel设置了一个正常数,为infoLabel设置了负值。如果要让mainLabel在上方高于,则需要在mainLabel中添加负值,而在infoLabel中添加负值。

09-17 17:00