【发布时间】:2016-05-12 13:05:58
【问题描述】:
我正在尝试使用给定的最大宽度使我的多行 UILabel 尽可能小,但是 sizeToFit() 和 sizeThatFits(_,_) 方法没有给出我想要的结果。
看看这张图片:
红色矩形代表我传入sizeThatFits 的宽度(而高度为Max)。显然,如您所见,此方法实际上确实返回适合的尺寸,但它并没有给我我想要的最小尺寸。
假设我指定了max-width: 300。这个实际结果给了我大约 ca 的大小。 280*50。
正如您在图像中看到的,文本现在是这样写的:
Here is some text that is supposed to
align nicely
我想要实现的是:
Here is some text that is
supposed to align nicely
这个结果将具有相同的高度,但宽度要小得多,例如 200*50
我意识到很难定义“可能的最小尺寸”,因为它可能会返回:
Here
is
some
text
that
...
甚至每行只有一个字母。但是考虑到sizeThatFits 以给定的宽度和高度返回它,为什么它不返回我想要的结果,它是相同的高度,但具有更小的宽度。为什么不返回最小的拟合?有这样的功能吗?
【问题讨论】:
-
你试过 label.minimumScaleFactor = 0.7 还是 0.8 ?
-
我认为你需要将 textAlignment 设置为 center
-
@RahulVyas
MinimumScaleFactor与此无关。不,我不希望文本居中对齐。即使我使用textAlignment=.Center,它也会在同一个地方打断句子,使文本align nicely单独出现在下一行。 -
我不认为你可以在原始实现中找到它,你可能必须通过在计算要显示的行数后限制一行中的字符数来自己实现它