1

kCTUnderlineStyleSingleNSAttributedstring을 사용 중입니다. 문자에 제대로 밑줄이 표시됩니다. 그러나 g, q, p과 같은 문자는 제대로 표시되지 않습니다.kCTUnderlineStyleSingle이 (가) 일부 문자에서 작동하지 않습니다.

사용자도 g와 q를 구별 할 수 없습니다.

그 해결책이 있습니까?

enter image description here

+2

이 일부 특정 글꼴로 발생할 수 있습니다. 다른 글꼴을 사용할 수도 있습니다. –

+0

@HoangVanHa 고담 중형 글꼴을 사용하고 있습니다. 나는 그것을 사용할 필요가있다. –

답변

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]; 
}