1

我正在使用NSAttributedstring,屬性kCTUnderlineStyleSingle。 字符正確下劃線。但某些字符如g,q,p無法正常顯示。kCTUnderlineStyleSingle對某些字符不起作用

即使用戶也無法區分g和q。

有沒有解決方案?

enter image description here

+2

這可能發生在一些特定的字體。你也許使用另一種字體。 –

+0

@HoangVanHa我正在使用Gotham-Medium字體。我只需要使用它。 –

回答

0

您可以使用此方法解決它:

- (void)addUnderlineWithRange:(NSRange)range 
{ 
    int lineThickness = [EnvUtils isIpadEnv] ? 2 : 1; 
    UIColor *lineColor = self.textColor; 
    NSString *string = self.text; 

    CGRect labelFrame = self.frame; 
    CGSize expectedLabelSize = [NSString getMultilineTextSize:[string substringWithRange:range] forMaxSize:labelFrame.size font:self.font]; 
    CGSize expectedLabelFullSize = [NSString getMultilineTextSize:string forMaxSize:labelFrame.size font:self.font]; 

    CGSize xOffset = [NSString getMultilineTextSize:[string substringWithRange:NSMakeRange(0, range.location)] forMaxSize:labelFrame.size font:self.font]; 

    CGFloat originX = (labelFrame.size.width - expectedLabelFullSize.width)/2 + xOffset.width; 
    CGFloat originY = expectedLabelSize.height + (labelFrame.size.height - expectedLabelFullSize.height)/2; 
    CGRect lineFrame = CGRectMake(originX, originY, expectedLabelSize.width, lineThickness); 

    UIView *lineView = [[[UIView alloc] initWithFrame:lineFrame] autorelease]; 
    lineView.backgroundColor = lineColor; 

    [self.superview addSubview:lineView]; 
}