自定义字体UILabel呈现错误

在我的iPhone应用程序中,我为所有UILabel设置了一个自定义字体(更准确地说,我将UILabel分类,覆盖方法,在该方法中设置自定义字体,然后将IB中的所有标签设置为该自定义类)。 现在的问题是,所有的文本都被渲染得太低于预期的基线,所以像'y'和'g'这样的字母被截断。 我在这里读过类似的问题:

UIButton自定义字体垂直alignment

自定义安装的字体在UILabel中显示不正确

然后,我试着用这些解决scheme(最初设置为990)来解决上行问题。 把它设置在500左右会产生好的结果,但是不久之后,我注意到多行文本中的行被混合在一起,这当然是不可接受的。 在UITextViews,字体似乎呈现与初始基准尽pipe..

有没有解决这个问题的实际方法? 当然,我可以保留几种不同上行字体的多行或单行文本,但这是一个相当混乱的解决scheme。

PS:字体是提供otf格式,虽然我试图将其转换为TTF,导致相同的结果。

好吧,万一有人有兴趣,我想出了一个解决方法,应该为我工作。 它只是重写drawTextInRect的方法drawTextInRect ,修改给定的矩形并将其传递给超类方法。

 - (void)drawTextInRect:(CGRect)rect { CGFloat pointSize = self.font.pointSize; CGRect newRect = CGRectMake(rect.origin.x, rect.origin.y - (0.25 * pointSize), rect.size.width, rect.size.height); [super drawTextInRect:newRect]; } 

我可能不得不尝试0.25以外的其他值,但…