错误呈现自定义字体的UILabel

bom*_*mpf 6 iphone xcode interface-builder custom-font ios

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

UIButton自定义字体垂直对齐

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

然后,我试着摆弄那些解决方案中描述的上升器(最初设置为990).将它设置为大约500导致了良好的结果,但不久之后,我注意到多行文本中的行被相互混合,这当然是不可接受的.在UITextViews上,字体似乎可以使用初始基线进行渲染.

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

PS:字体以otf格式提供,但我尝试将其转换为ttf,导致相同的结果.

bom*_*mpf 6

好的,为了防止有人感兴趣,我想出了一个对我有用的解决方法.它简单地由覆盖方法drawTextInRectUILabel,修改给定的矩形,并将它传递到超类方法.

- (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];
}
Run Code Online (Sandbox Code Playgroud)

我可能不得不尝试0.25以外的其他值...