UILabel去除底部间距。

3

我在使用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个回答

6

框架包括下降到文本基线以下的小写字母,如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/

天才,这正是我的问题,现在一切都适合得很好。非常感谢,但由于我是新手,似乎还不能投票。我会选择您的答案。谢谢。 - Laurent
似乎当我从框架高度中减去下降者时,UILabel并未调整文本的位置,文字的顶部被截断,而不是从UILabel底部移除空间。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接