2012-03-16 68 views
6

在我的iPhone應用程序,我設置自定義字體爲所有UILabels(更精確地說,我的子類的UILabel,覆蓋的方法,該方法設置自定義字體,然後設置中的所有標籤IB到那個自定義類)。現在的問題是,所有的文本都被渲染得太低於預期的基線,所以像'y'和'g'這樣的字母被截斷。我讀過有關此類似的問題:的UILabel與自定義字體錯誤地呈現

UIButton custom font vertical alignment

Custom installed font not displayed correctly in UILabel

然後我試圖與在這些解決方案(它被設置爲990最初)中描述的伸擺弄周圍。將它設置爲500左右會帶來好的結果,但在此之後不久,我注意到多行文本中的行被混合在一起,這當然是不可接受的。在UITextViews,字體似乎呈現罰款雖然初始基準..

有沒有辦法解決這個問題的一個可行的方法?當然,我可以爲多行或單行文本保留不同上行字體的多種字體,但這是一個相當混亂的解決方案。

PS:字體以otf格式提供,儘管我嘗試將它轉換爲ttf ,導致相同的結果。

回答

6

好,以防萬一有人有興趣,我想出了一個變通方法,應爲我工作。它只是覆蓋UILabel的方法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,雖然不同的值...

+0

我用這個。 - (void)drawTextInRect:(CGRect)rect {CGFloat pointSize = self.font.pointSize; 的CGRect newRect = CGRectMake(rect.origin.x,rect.origin.y +(0.2 *的pointsize),rect.size.width,rect.size.height); [super drawTextInRect:newRect]; } – kgibbon 2012-05-31 22:08:15