如何调整 UiLabel 的基线偏移?

Posted

技术标签:

【中文标题】如何调整 UiLabel 的基线偏移?【英文标题】:How to adjust the baseline shift for a UiLabel? 【发布时间】:2015-09-13 08:07:18 【问题描述】:

我的应用正在使用自定义字体来显示整个应用的信息。

但他们的基线存在一些问题,如下图所示:

我需要将“X 4”固定在垂直红色框的中心。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

您可以创建一个UILabel 并将其大小设置为与红色框相同。然后将其文本对齐设置为中心:

youLabel.textAlignment = NSTextAlignment.Center

另一个不太好的选择是制作一个与红色框大小相同的UIButton,并将其UserInteractionEnabled 设置为No。这样,您的文本将水平和垂直定位在中心。你也可以设置为setContentVerticalAlignment属性

【讨论】:

这仅适用于水平对齐,但不适用于垂直。 再次检查答案。编辑它【参考方案2】:

使用调整后的基线偏移设置属性字符串,就像在 Swift 中一样:

let sttrStr = NSAttributedString.init(string: "your text",
                                      attributes:[NSAttributedStringKey.baselineOffset: -10])
textLabel.attributedText = attrStr

或在 ObjC 中类似:

NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:@"your string"
                              attributes:@ NSBaselineOffsetAttributeName : @-10 ];
textLabel.attributedText = attrStr;

按 SO 回答 here

【讨论】:

以上是关于如何调整 UiLabel 的基线偏移?的主要内容,如果未能解决你的问题,请参考以下文章

字体更改时自动uiLabel和uiTableViewCell调整大小的iphone代码?

IOS UILabe及UIFont用法总结

UILabel 的基线

自动增加/减少 UITableViewCell 中的 UILabelView 高度?

在 Matlab 中删除图像偏移(2D 基线)

如何在 animateWithDuration 的每个动画之间重复更改 UILabel 的文本?