【问题标题】:Autolayout: UILabel not resizing properly with long text自动布局:UILabel 无法正确调整长文本的大小
【发布时间】:2015-11-30 22:36:11
【问题描述】:

我有一个 UITableViewCell 和两个 UILabels:标题和描述。

我的标题标签有问题。基本上,如果文本大于可用空间并防止“...”,我想要增加它的高度。就是这个样子,可以看到右边title标签的约束。

如您所见,标题标签成功地增加了它的高度,但文本仍然在一行中。 “文本样式 - 标注”中使用的字体。有什么建议吗?

编辑 1:我已经将行数设置为 '0'

编辑 2:我通过删除 UILabel 并重新添加来修复它,但首先看看 Wojtek 提出的建议。

【问题讨论】:

  • 设置标签内容后可以执行yourLabel.sizeToFit()
  • @ClaudioRedi 谢谢,已经这样做了,结果相同。
  • 您可能需要在 UILabel 上设置 preferredMaxLayoutWidth 以便它知道何时换行。看起来约束取决于标签的 -intrinsicContentSize ,除非您告诉它必须从哪里开始包装,否则它将始终是一行(因为它需要弄清楚这一点以生成约束,进而定义框架) .
  • 如果只是一个标签,只给前导和尾随,和高度,不给任何宽度限制
  • 尝试在sizeToFit 之后执行yourLabel.updateConstraints()。自动布局对我来说仍然是一场噩梦,所以如果没有帮助,我深表歉意

标签: ios autolayout uilabel


【解决方案1】:

在启用自动布局的情况下支持此行为,请按照相关 UILabel 的以下步骤操作。

  1. 在实用程序窗格 > 属性检查器中将行数设置为“0”。

  2. 右键单击 UILabel 和 Alt - 控件(Xcode 7.1 及更高版本)拖动到它的超级视图以设置前导、尾随、顶部和底部边距。

  3. 对于自动高度和宽度,您可以将约束的优先级设置为级别“600”,关系为“大于或等于”。

Github 示例(在以下示例中,我仅对底部约束使用不同的“关系”。您也可以选择对不同的约束执行此操作,即特定情况下的尾随约束):https://github.com/wojtekdmyszewicz/UILabel

【讨论】:

  • 对不起,不工作。我忘了提到我已经将行数设置为 0,我将添加到主帖子中。设置唯一缺少的顶部约束没有效果。
  • @estemendoza 你在使用自动布局吗?
  • @estemendoza,你有没有将换行符设置为“自动换行”?
  • 不,我在“Truncate Tail”中有它,这就是它显示“...”的原因,但我改为尝试它并得到相同的结果。
  • @estemendoza 也许首先尝试仅使用一个 UILabel 和正确的约束(前导、尾随、底部、顶部)对其进行测试。并确保没有以编程方式与您的约束冲突。
猜你喜欢
  • 2013-06-14
  • 1970-01-01
  • 2014-08-19
  • 2023-03-23
  • 2012-11-18
  • 2013-01-02
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多