使用自动布局的独特多行 UILabel 外观

Unique multiline UILabel looks using auto layout

我有一个多行 UILabel,我希望它在不同设备上看起来相似(仅限 iPhone)。如果它是单行,我会简单地放置自动布局约束并启用自动收缩并设置最小字体比例。

标签的高度是根据文字动态计算的。为此,我需要字体,它也应该是动态的。我可以做的 hack 是放置一个不可见的标签,然后将我想要放在一行中的文本设置到其中并计算字体,但它似乎太 hacky 了。

我不太熟悉的另一件事是尺寸 classes。但据我所知,所有肖像共享相同的 class,这意味着 3.5、4、4.7 和 5.5 英寸的设备将绑定到相同的 class,因此我无法使用单独的字体值?

我如何为多行标签实现 'font scaling' 以便在不同的屏幕尺寸上获得相似的外观?

如果你所说的相似是指每行出现相同的词,我认为这是不可能的。

如果标签高度根据文本量动态变化,则标签将简单地扩展到显示具有指定字体大小的文本所需的高度。

字体缩放仅在没有足够的 space 来显示具有指定字体大小的文本时才会启动。因此,您必须限制行的高度或行数。

我可以使用字体比例为 0.5 的多行 UILabel 来近似这个。我在它和它的父视图之间设置了一个等高约束,乘数为 0.25。请参阅下面的屏幕截图。

在这种方法中,您必须根据您拥有的文本量动态更改等高乘数。