xib布局中一个label的宽度在传入其中的文字超过五个字符时会自适应文字宽度,但是少于这个字符数就是固定宽度,怎么修改成无论字符是多少,都会自适应宽度
时间: 2023-12-29 14:04:22 浏览: 20
你可以在设置 label 的约束时,将宽度约束的优先级从高到低排列,然后设置一个最小宽度约束。这样当文字长度小于等于固定宽度时,最小宽度约束会起作用,保证 label 的宽度不会小于最小宽度;而当文字长度大于固定宽度时,宽度约束的优先级会低于最小宽度约束,此时 label 的宽度会根据文字内容自适应。
具体实现步骤:
1. 设置 label 的约束,如下所示:
```
label.translatesAutoresizingMaskIntoConstraints = false
label.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 16).isActive = true
label.topAnchor.constraint(equalTo: view.topAnchor, constant: 16).isActive = true
label.heightAnchor.constraint(equalToConstant: 30).isActive = true
```
2. 添加一个宽度小于等于最小宽度的约束,如下所示:
```
let minWidthConstraint = label.widthAnchor.constraint(greaterThanOrEqualToConstant: 50)
minWidthConstraint.priority = .defaultHigh
minWidthConstraint.isActive = true
```
3. 添加一个宽度等于文字内容宽度的约束,如下所示:
```
let widthConstraint = label.widthAnchor.constraint(equalTo: label.intrinsicContentSize.width)
widthConstraint.priority = .defaultLow
widthConstraint.isActive = true
```
这样就可以实现 label 宽度自适应文字内容了。