gpt4 book ai didi

iphone - 强制文本垂直放置在 UILabel 中?

转载 作者:太空狗 更新时间:2023-10-30 03:54:15 25 4
gpt4 key购买 nike

我知道有很多与此类似的主题,但我已经阅读了所有主题(据我所知)并且没有看到我遇到的相同问题。

我试图让所有文本垂直显示在标签中。

让我解释一下 - 字体并不总是以相同的方式创建,因此虽然它们的总高度可能相同(例如 24pts)。然而,Ascender 和 Descender 差异很大 - 一种字体可能大部分位于基线上方,而另一种字体大部分位于基线下方。因此,具有不同字体的相同文本可能不会始终显示在相同的 View /标签中。

例如,请参见下面的屏幕截图。

第一个是 Helvetica-Bold 300pts。第二个是 Apple Gothic 300pts。

请注意“g”的底部是如何用 Helvetica(以及许多其他字体 - 尝试一下,您会看到的)被截断。

Helvetica-Bold300

AppleGothic

所以我的问题是:我希望能够看到整个文本,而不考虑字体。如果“Helvetica”示例中的文本可以在标签内向上移动(并居中),它将解决我的问题。为了方便起见,我只需要显示一行。

不幸的是,我看到的所有解决方案都没有涉及字体的下行和上行以及弄清楚如何在 Rect 内绘制文本而不对其进行裁剪。请注意,各种线程中的“VerticalAlignment”解决方案无法解决此特定问题。

有没有人对此有任何想法或解决方案?

最佳答案

最简单的方法是继承 UILabel 并使用 NSString 的 - (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode 方法,在 NSString UIKit additions 中找到.

您可以在您的子类中覆盖 - (void)setFont,测试字体大小是否适用于 View 的矩形,如果它太大,则将其变小直到适合。

关于iphone - 强制文本垂直放置在 UILabel 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9121899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com