自动布局:UILabel 无法正确调整长文本的大小
Posted
技术标签:
【中文标题】自动布局:UILabel 无法正确调整长文本的大小【英文标题】:Autolayout: UILabel not resizing properly with long text 【发布时间】:2015-11-30 22:36:11 【问题描述】:我有一个 UITableViewCell
和两个 UILabel
s:标题和描述。
我的标题标签有问题。基本上,如果文本大于可用空间并防止“...”,我想要增加它的高度。就是这个样子,可以看到右边title标签的约束。
如您所见,标题标签成功地增加了它的高度,但文本仍然在一行中。 “文本样式 - 标注”中使用的字体。有什么建议吗?
编辑 1:我已经将行数设置为 '0'
编辑 2:我通过删除 UILabel
并重新添加来修复它,但首先看看 Wojtek 提出的建议。
【问题讨论】:
设置标签内容后可以执行yourLabel.sizeToFit()
。
@ClaudioRedi 谢谢,已经这样做了,结果相同。
您可能需要在 UILabel 上设置 preferredMaxLayoutWidth 以便它知道何时换行。看起来约束取决于标签的 -intrinsicContentSize ,除非您告诉它必须从哪里开始包装,否则它将始终是一行(因为它需要弄清楚这一点以生成约束,进而定义框架) .
如果只是一个标签,只给前导和尾随,和高度,不给任何宽度限制
尝试在sizeToFit
之后执行yourLabel.updateConstraints()
。自动布局对我来说仍然是一场噩梦,所以如果没有帮助,我深表歉意
【参考方案1】:
在启用自动布局的情况下支持此行为,请按照相关 UILabel 的以下步骤操作。
在实用程序窗格 > 属性检查器中将行数设置为“0”。
右键单击 UILabel 和 Alt - 控件(Xcode 7.1 及更高版本)拖动到它的超级视图以设置前导、尾随、顶部和底部边距。
对于自动高度和宽度,您可以将约束的优先级设置为级别“600”,关系为“大于或等于”。
Github 示例(在以下示例中,我仅对底部约束使用不同的“关系”。您也可以选择对不同的约束执行此操作,即特定情况下的尾随约束):https://github.com/wojtekdmyszewicz/UILabel
【讨论】:
对不起,不工作。我忘了提到我已经将行数设置为 0,我将添加到主帖子中。设置唯一缺少的顶部约束没有效果。 @estemendoza 你在使用自动布局吗? @estemendoza,你有没有将换行符设置为“自动换行”? 不,我在“Truncate Tail”中有它,这就是它显示“...”的原因,但我改为尝试它并得到相同的结果。 @estemendoza 也许首先尝试仅使用一个 UILabel 和正确的约束(前导、尾随、底部、顶部)对其进行测试。并确保没有以编程方式与您的约束冲突。以上是关于自动布局:UILabel 无法正确调整长文本的大小的主要内容,如果未能解决你的问题,请参考以下文章