以编程方式动态调整 uilabel 宽度的约束
Posted
技术标签:
【中文标题】以编程方式动态调整 uilabel 宽度的约束【英文标题】:Constraints for dynamically size uilabel width programmatically 【发布时间】:2021-01-04 04:29:25 【问题描述】:我有两个完全以编程方式设置的标签。标签二应始终靠在标签一的右边缘(它们之间有一个小空间)。标签一的宽度设置为等于其内容大小,除非它达到最大宽度。视觉上:
|标签一| |标签二|
我需要以下约束:
标签一个应该调整宽度,除非它达到最大尺寸。
标签二应始终位于标签一的右边缘
如何以编程方式设置这些约束?
【问题讨论】:
【参考方案1】: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)
])
【讨论】:
【参考方案2】:我同意@Kevvv 的回答,但是您还必须将 labelTwo 的尾随约束分配给视图的尾随,因为如果 labelTwo 的宽度会在内容大小更大时增加。
只需添加一个或多个约束
labeltwo.trailingAnchor.constraint(greaterThanOrEqualTo: view.trailingAnchor)
【讨论】:
以上是关于以编程方式动态调整 uilabel 宽度的约束的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式动态调整多行 UILabel 和随附的表格视图单元格