You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据文本长度设置Layout Anchors,实现UITableViewCell内两个UILabel同行排布

实现方案

你当前的代码给firstNameLabel设置了固定100pt的宽度约束,这是无法自适应文本长度的核心原因,只需要调整约束逻辑、配合内容优先级设置即可实现需求。

具体修改步骤

  • 第一步:删除firstNameLabel的固定宽度约束,直接移除以下代码:
    firstNameLabel.widthAnchor.constraint(equalToConstant: 100).isActive = true
  • 第二步:设置两个Label的抗压缩与内容拥抱优先级,避免文本过长时布局冲突:
    我们需要保证姓氏Label优先完整展示,名字Label长度不足时不会被无故拉伸、长度过长时优先被截断,因此优先级设置规则如下:
    • 姓氏Label的抗压缩优先级高于名字Label,避免姓氏内容被压缩
    • 名字Label的内容拥抱优先级高于姓氏Label,避免名字区域出现多余空白
  • 第三步:可选配置截断规则,可根据需求给名字Label设置尾部截断,优化长文本展示效果:
    firstNameLabel.lineBreakMode = .byTruncatingTail

修改后的完整代码

func setFirstnameLabel() {
    firstNameLabel.translatesAutoresizingMaskIntoConstraints = false
    // 内容拥抱优先级设为更高,避免被拉伸出现多余空白
    firstNameLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal)
    // 抗压缩优先级设为更低,文本过长时优先被截断
    firstNameLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
    firstNameLabel.lineBreakMode = .byTruncatingTail
    firstNameLabel.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
    firstNameLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 12).isActive = true
    firstNameLabel.heightAnchor.constraint(equalToConstant: 30).isActive = true
}

func setLastNameLabel() {
    lastNameLabel.translatesAutoresizingMaskIntoConstraints = false
    // 抗压缩优先级设为更高,优先展示完整姓氏内容
    lastNameLabel.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
    lastNameLabel.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
    lastNameLabel.leadingAnchor.constraint(equalTo: firstNameLabel.trailingAnchor, constant: 20).isActive = true
    lastNameLabel.heightAnchor.constraint(equalToConstant: 30).isActive = true
    lastNameLabel.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -12).isActive = true
}

效果说明

修改后两个Label会自动根据文本内容调整布局:

  1. 名字较短时,名字Label宽度自动贴合文本,姓氏Label紧跟在名字右侧20pt的位置
  2. 名字过长时,名字Label会自动截断尾部内容,保证姓氏Label完整展示在右侧,不会超出cell边界

内容的提问来源于stack exchange,提问作者beginner992

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:00:00