【发布时间】:2021-01-04 04:29:25
【问题描述】:
我有两个完全以编程方式设置的标签。标签二应始终靠在标签一的右边缘(它们之间有一个小空间)。标签一的宽度设置为等于其内容大小,除非它达到最大宽度。视觉上:
|标签一| |标签二|
我需要以下约束:
-
标签一个应该调整宽度,除非它达到最大尺寸。
-
标签二应始终位于标签一的右边缘
如何以编程方式设置这些约束?
【问题讨论】:
我有两个完全以编程方式设置的标签。标签二应始终靠在标签一的右边缘(它们之间有一个小空间)。标签一的宽度设置为等于其内容大小,除非它达到最大宽度。视觉上:
|标签一| |标签二|
我需要以下约束:
标签一个应该调整宽度,除非它达到最大尺寸。
标签二应始终位于标签一的右边缘
如何以编程方式设置这些约束?
【问题讨论】:
lessThanOrEqualToConstant widthAnchor 应该可以完成这项工作。
let labelOne = UILabel()
labelOne.text = "label1"
let labelTwo = UILabel()
labelTwo.text = "label2"
labelOne.translatesAutoresizingMaskIntoConstraints = false
labelTwo.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(labelOne)
view.addSubview(labelTwo)
NSLayoutConstraint.activate([
labelOne.topAnchor.constraint(equalTo: view.topAnchor),
labelOne.leadingAnchor.constraint(equalTo: view.leadingAnchor),
labelOne.widthAnchor.constraint(lessThanOrEqualToConstant: 100),
labelTwo.leadingAnchor.constraint(equalToSystemSpacingAfter: labelOne.trailingAnchor, multiplier: 1),
labelTwo.topAnchor.constraint(equalTo: view.topAnchor)
])
【讨论】:
我同意@Kevvv 的回答,但是您还必须将 labelTwo 的尾随约束分配给视图的尾随,因为如果 labelTwo 的宽度会在内容大小更大时增加。
只需添加一个或多个约束
labeltwo.trailingAnchor.constraint(greaterThanOrEqualTo: view.trailingAnchor)
【讨论】: