我的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
}
(所需结果)
但是因为常量是一个变量,所以有时看起来像:
(不需要的结果)
我尝试在
mainLabel
和infoLabel
之间添加一个约束,并按优先级进行播放,但这些解决方案均无法正常工作。题:
如何为这两个标签添加“最小”约束,以使它们不会彼此重叠,而是同时将其居中到
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
中添加负值。