Swift 水平Stack View中UILabel无法按需求自适应填充宽度问题求解
解决方案
你只需要按以下步骤调整配置和约束即可实现预期效果:
1. 调整两个Label的基础属性
- 标题Label、详情Label的
numberOfLines统一设为0,lineBreakMode改为byWordWrapping(你当前配置的tailTruncation仅适用于单行截断,不支持多行显示) - 保持标题Label的水平Content Hugging Priority为252,详情Label的水平Content Hugging Priority为251;同时将标题Label的水平Compression Resistance Priority设为751,详情Label设为750,保证标题内容优先完整展示不会被压缩
2. 调整StackView配置
- StackView的
distribution属性设为.fill,alignment属性设为.top,避免两个Label高度不同时出现顶部不对齐的问题
3. 修正约束配置
- 保留你已添加的「详情Label宽度 >= 标题Label宽度」约束,将该约束的优先级设为750(默认高优先级即可),不要额外添加等宽、比例类约束
- 删除XIB中StackView到父视图trailing的冗余约束(ID为
O6p-XR-VEs),仅保留StackView到safeArea的四边约束即可
动态切换布局说明
当文本过长需要切换为垂直布局时,仅需要修改StackView的axis属性为.vertical,上述所有配置和约束都不需要调整,可自动适配垂直布局下的多行文本显示。
内容的提问来源于stack exchange,提问作者ScottyBlades
相关产品推荐
相关产品推荐

