我正在使用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;
一切都很好,但文字的垂直对齐方式不正确。它更接近顶部边缘。如何在UILabel的垂直中心对齐文本?
我读过UIFont的ascender和descender属性,我可以使用它们来对齐UILabel垂直中心的文本。
答案 0 :(得分:2)
您可以使用属性字符串而不是普通NSString
作为标签文本(因此请使用attributedText
属性而不是text
),并使用{{ 1}}属性described here at Apple。
答案 1 :(得分:1)
另一种解决方案是将UILabel
子类化,以便为标签添加边距,这样就可以定义一个自定义的"顶部边距"补偿基线变化。
请参阅this question以查看实施细节。
答案 2 :(得分:-1)