1
我正在使用NSAttributedstring
,屬性kCTUnderlineStyleSingle
。 字符正確下劃線。但某些字符如g,q,p無法正常顯示。kCTUnderlineStyleSingle對某些字符不起作用
即使用戶也無法區分g和q。
有沒有解決方案?
我正在使用NSAttributedstring
,屬性kCTUnderlineStyleSingle
。 字符正確下劃線。但某些字符如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我正在使用Gotham-Medium字體。我只需要使用它。 –