水平UIStackView中UILabel布局异常求助:第二个标签占用过多空间
嘿,我知道这种布局问题有多头疼!你已经设置了第二个标签的Content Hugging Priority为.high,但还是没解决,那大概率是漏掉了这几个关键设置,咱们一步步来:
调整第一个UILabel的水平
Content Hugging Priority
StackView的fill分布规则是:把多余空间分配给「Content Hugging Priority更低」的控件。如果你只给第二个标签设了高优先级,但第一个标签的优先级和它一样甚至更高,那两个标签还是会平分多余空间。
操作方法:把第一个UILabel的**HorizontalContent Hugging Priority**设得比第二个低(比如第二个用251的.high,第一个用250的.defaultHigh或者更低)。这样StackView就会让第二个标签保持固有尺寸,把多余空间全给第一个标签。检查是否有冲突的宽度约束
如果你给第二个UILabel加了固定宽度、或者「宽度≥XX」的约束,那Content Hugging Priority的设置会被覆盖。去约束列表里看看,把这类可能强制拉宽标签的约束删掉。确认UILabel的换行设置(如果是多行的话)
如果第二个标签是多行(numberOfLines = 0),要确保它的lineBreakMode设置合理(比如.byWordWrapping),不然标签可能会为了容纳文本而被过度拉伸。不过如果是单行标签,这个步骤可以跳过。验证Horizontal
Content Compression Resistance Priority
虽然你的问题是标签被拉伸(不是压缩),但还是要确保第二个标签的**HorizontalContent Compression Resistance Priority**不要太低(默认是750的.required就很好),避免它被不必要地压缩,影响整体布局逻辑。
按照这几步调整后,第二个标签应该就能乖乖保持它的固有内容尺寸啦!
内容的提问来源于stack exchange,提问作者noob

