UILabel删除底部边距

时间:2015-08-07 20:38:11

标签: objective-c uilabel margin

我遇到了UILabel的麻烦。 我正在尝试使用UILabel,以便容器中根本没有边距。 我尝试了不同的东西,比如sizeToFit,boundsToRect和其他东西,但到目前为止从未得到过解决方案。

这是我的代码:

UILabel* saveLabel = [[UILabel alloc] init];
saveLabel = [[UILabel alloc] init];
saveLabel.text = "USER     SAVE";
saveLabel.textAlignment = NSTextAlignmentRight;
saveLabel.layer.borderWidth = 2;
[saveLabel sizeToFit];

当我将此添加到我的视图中时,我希望底部的边框(从边框开始)触摸标签的字母,但两者之间有一个空格。

如果你想看,我附上了一个底部效果的图片。 http://oi62.tinypic.com/n62b0w.jpg

我真的不明白为什么这个边缘存在以及如何摆脱它。 所有其他边距,顶部,左边和右边都很好,只是底部边缘。

对此的任何帮助都将非常感激,

由于

1 个答案:

答案 0 :(得分:4)

框架包括小写字母的空格,如g和y,它们在文本的基线下面“下降”。在您的情况下,您只使用大写字母,因此您可能希望删除框架的下降部分。您可以通过saveLabel.font.descender访问下降器的高度,然后从拟合框架的高度中减去该高度。

[saveLabel sizeToFit];
saveLabel.frame = CGRectMake(saveLabel.frame.origin.x
                             saveLabel.frame.origin.y,
                             saveLabel.frame.size.width,
                             saveLabel.frame.size.height - saveLabel.font.descender);

以下文章有一个很好的图表: https://www.cocoanetics.com/2010/02/understanding-uifont/