以编程方式动态调整 uilabel 宽度的约束

时间:2021-01-04 04:29:25

标签: ios swift xcode

我有两个完全以编程方式设置的标签。标签二应始终紧靠标签一的右边缘(它们之间有一个小空间)。标签一的宽度设置为等于其内容大小,除非它达到最大宽度。视觉上:

|标记一个| |标签二|

我需要以下约束:

  1. 除非达到最大尺寸,否则标签应调整宽度。

  2. 标签二应始终靠在标签一的右边缘

如何以编程方式设置这些约束?

2 个答案:

答案 0 :(得分:0)

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)
])

答案 1 :(得分:0)

我同意@Kevvv 的回答,但您还必须将 labelTwo 的尾随约束分配给视图的尾随,因为如果内容大小更大,则 labelTwo 的宽度会增加。

只需添加一个或多个约束

labeltwo.trailingAnchor.constraint(greaterThanOrEqualTo: view.trailingAnchor)