调用sizeToFit时,UIButton无法使用自定义字体正确调整高度



我正在尝试使用自定义字体创建UIButton。我设置了titleLabel's字体,然后设置了文本,然后调用sizeToFit。不幸的是,它将高度调整为太小的几个像素,并剃掉了每个大写字母的一部分。按钮的titleLabel的高度比按钮本身的大小小,但在调用sizeToFit后手动设置其边框对我没有任何帮助。我注意到普通UILabel也有同样的行为,只是当我手动将边框设置为UIButton的大小时,文本显示得很完美。当我调用sizeToFit时,UILabel的大小与UIButton'stitleLabel的大小相同,它还切掉了我的大写字母的顶部。此外,由于这是一个我添加这些按钮的SpriteKit SKView,我还创建了一个SKLabelNode,看看它是如何自动调整字体大小的,它做得很好,它的高度比我的UILabel和UIButton的titleLabel的高度都高出几个像素。这是一张imgur相册,可以直观地显示它,它在s和小写i:的点号上很明显

https://i.stack.imgur.com/47YaU.jpg

有人知道发生这种事的原因吗?

如果有人遇到同样的问题,我只需将UIButton子类化就可以找到解决方案。然后,我只是修改了layoutSubviews,使title标签边界等于按钮的子视图,并且它不再截断字体的顶部。不确定这是否是最好的方法,但它有效。

- (void)layoutSubviews
{
[super layoutSubviews];
self.titleLabel.bounds = self.bounds;
}

最新更新