我对 a 进行了分类UILabel
,所以我可以TitleLabel
在几个地方使用它。这TitleLabel
有一个自定义字体。lineheight
设置为NSAttributedString
.
这是drawTextInRect
覆盖方法:
- (void)drawTextInRect:(CGRect)rect {
self.text = @"THIS IS A TEST";
NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:self.text];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.minimumLineHeight = 15.f;
paragraphStyle.maximumLineHeight = 15.f;
[attStr addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(0,7)];
[attStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, self.text.length)];
[attStr addAttribute:NSFontAttributeName value:[UIFont fontWithName:TITLE_FONT_NAME size:TITLE_FONT_SIZE] range:NSMakeRange(0, self.text.length)];
self.attributedText = attStr;
[super drawTextInRect:rect];
}
添加背景颜色用于测试目的。如您所见,黄色背景颜色的位置正确。文本THIS IS应位于黄色背景中,但位于背景上方。
TITLE_FONT_SIZE
是15
,在别处定义。
有谁知道为什么会这样?