ios - 当多行标签的字体调整以适应可用宽度时,如何使多行标签的高度正确?

标签 ios autolayout uilabel

我设计了一个包含两个标签的 View 。标题文本是可变的,短标题和长标题都应该看起来不错,所以它被设置为支持多行文本(numberOfLines is 0)直到没有更多可用空间,此时字体应该缩小(adjustsFontSizeToFitWidthtrue)。

为了演示我的问题,我使用不变的标题文本并改为调整容器的高度。

  1. 当容器的高度足以容纳两个标签时,事情看起来符合预期。

  1. 一旦高度不够,字幕就会被剪掉,而不是缩小标题标签的字体。

  1. 我们通过 subtitleLabel.setContentCompressionResistancePriority(.required, for: .vertical) 防止这种情况。事情看起来好多了。字幕标签恢复到正确的高度,而标题标签的字体变小了。

  1. 让我们再次降低高度。字幕标签看起来还是不错的。标题标签再次调整其字体,但有大量的顶部和底部填充。这是有道理的——三行标题的高度已经不够用了,所以字体大小会缩小,直到适合两行。但我们希望标签本身降低其高度以拥抱内容,而不是将标题搁浅在太空的海洋中。

预期布局

我尝试过的事情:

  • 让我们尝试使用 titleLabel.setContentHuggingPriority(.required, for: .vertical) 来鼓励它这样做。不幸的是没有变化。
  • 让我们删除该行并尝试其他方法。我们有 read我们应该尝试降低标题标签上的内容压缩优先级:titleLabel.setContentCompressionResistancePriority(.defaultLow, for: .vertical)。没有变化。
  • 另一个 suggestion是在标题标签上设置一个最小比例因子。让我们试试 titleLabel.minimumScaleFactor = 0.5。没有变化。
  • 也许我们应该set a width constraint ,即使我们已经固定到 super View ?没有变化。
  • 有几个地方建议设置标签的 preferredMaxLayoutWidth 以匹配标签的宽度,但这也没有帮助。

还有其他建议吗?有没有办法使用自动布局来完成此设计?

最佳答案

自调整标签(自动调整其高度以适应其内容)和具有自调整文本的标签(字体大小改变以适应高度)的条件是相反的。前者假定固定的字体大小和灵活的高度;后者采用灵活的字体大小和固定的高度。

您似乎在问是否可以自动同时拥有两者。不,你不能。如果您想要一个自调整大小的标签,一旦超过一定数量的文本,字体大小就会变小,必须缩小字体大小。

关于ios - 当多行标签的字体调整以适应可用宽度时,如何使多行标签的高度正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56774992/

相关文章:

当我单击标签时,快速打开底部的日期选择器,并带有完成和取消按钮

ios - 类型 'UIImage' 没有成员 'radialGradientImage'

iphone - 如何在 iphone 中获取 NSMutableDictionary 计数?

ios - 使用 CoreText 绘图时禁用混合

ios - ScrollView 缩放问题

ios - UITableViewCell systemLayoutSizeFittingSize 额外增加 0.5 px

ios - 复制Apple联系人编辑屏幕

ios - 单元格标签在表格滚动之前不会调整大小

ios - UIStackView 高度约束问题中的 UITableView

ios - 仅更改 UITableView 中一个部分的页脚大小