1
kCTUnderlineStyleSingle
인 NSAttributedstring
을 사용 중입니다. 문자에 제대로 밑줄이 표시됩니다. 그러나 g, q, p과 같은 문자는 제대로 표시되지 않습니다.kCTUnderlineStyleSingle이 (가) 일부 문자에서 작동하지 않습니다.
사용자도 g와 q를 구별 할 수 없습니다.
그 해결책이 있습니까?
kCTUnderlineStyleSingle
인 NSAttributedstring
을 사용 중입니다. 문자에 제대로 밑줄이 표시됩니다. 그러나 g, q, p과 같은 문자는 제대로 표시되지 않습니다.kCTUnderlineStyleSingle이 (가) 일부 문자에서 작동하지 않습니다.
사용자도 g와 q를 구별 할 수 없습니다.
그 해결책이 있습니까?
이 방법을 사용하여 문제를 해결할 수 있습니다
- (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];
}
이 일부 특정 글꼴로 발생할 수 있습니다. 다른 글꼴을 사용할 수도 있습니다. –
@HoangVanHa 고담 중형 글꼴을 사용하고 있습니다. 나는 그것을 사용할 필요가있다. –