我可以为System UIFont设置上升器或下降器吗?

时间:2014-09-26 10:22:40

标签: ios objective-c uilabel uifont

我正在使用UILabel使用以下代码创建警报徽章:

    [label setText:@"67"];
    UIFont * font = [UIFont systemFontOfSize:11];
    [label setFont:font];
    [label sizeToFit];

    [label setTextAlignment:NSTextAlignmentCenter];
    [label setBackgroundColor:[UIColor yellowColor]];
    [label setTextColor:[UIColor whiteColor]];
    label.layer.cornerRadius = label.frame.size.height/2;

Badge screenshot

一切都很好,但文字的垂直对齐方式不正确。它更接近顶部边缘。如何在UILabel的垂直中心对齐文本?

我读过UIFont的ascender和descender属性,我可以使用它们来对齐UILabel垂直中心的文本。

3 个答案:

答案 0 :(得分:2)

您可以使用属性字符串而不是普通NSString作为标签文本(因此请使用attributedText属性而不是text),并使用{{ 1}}属性described here at Apple

答案 1 :(得分:1)

另一种解决方案是将UILabel子类化,以便为标签添加边距,这样就可以定义一个自定义的"顶部边距"补偿基线变化。

请参阅this question以查看实施细节。

答案 2 :(得分:-1)

要垂直对齐UILabel使用的文本 -

myLabel.numberOfLines = 0;
[myLabel sizeToFit];

详细回答检查This SO Answer