设置下划线,删除线
主要原理就是通过设置yy_baselineOffset和yy_textUnderline = [YYTextDecoration decorationWithStyle:YYTextLineStyleSingle];
形成字体偏移,但是下划线保持原位置,来确保下划线与文本之间的偏移量,
**注意!**如果直接设置yy_underlineStyle = NSUnderlineStyleSingle的话,下划线会与文本同时偏移。
最终效果
代码(以下划线为例,删除线同理)
// 创建一个NSAttributedStringUIFont *font = [UIFont systemFontOfSize:14];NSMutableAttributedString *Text = [[NSMutableAttributedString alloc] init];YYLabel *label = [[YYLabel alloc] initWithFrame:CGRectMake(0, 100, 1000, 100)];label.numberOfLines = 5;label.font = font;NSMutableAttributedString *attr1 = [[NSMutableAttributedString alloc] initWithString:@"粗斜体下滑线偏移"];attr1.yy_textUnderline = [YYTextDecoration decorationWithStyle:YYTextLineStyleSingle];attr1.yy_font = [UIFont fontWithDescriptor:[[font fontDescriptor] fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold] size:font.pointSize];attr1.yy_maximumLineHeight = 22;attr1.yy_minimumLineHeight = 22;CGFloat baselineOffset = (22 - attr1.yy_font.lineHeight) / 4;attr1.yy_baselineOffset = @(-baselineOffset);attr1.yy_textGlyphTransform = CGAffineTransformMake(1, 0, tanf(10 * (CGFloat)M_PI / 180), 1, 0, 0);NSMutableAttributedString *attr2 = [[NSMutableAttributedString alloc] initWithString:@"普通文本+下划线偏移"];attr2.yy_font = font;attr2.yy_maximumLineHeight = 22;attr2.yy_minimumLineHeight = 22;baselineOffset = (22 - attr2.yy_font.lineHeight) / 4;attr2.yy_baselineOffset = @(baselineOffset);attr2.yy_textUnderline = [YYTextDecoration decorationWithStyle:YYTextLineStyleSingle];NSMutableAttributedString *attr3 = [[NSMutableAttributedString alloc] initWithString:@"普通文本偏 +下划线不偏"];attr3.yy_font = font;attr3.yy_maximumLineHeight = 22;attr3.yy_minimumLineHeight = 22;attr3.yy_underlineStyle = NSUnderlineStyleSingle;attr3.yy_baselineOffset = @(baselineOffset);baselineOffset = (22 - attr3.yy_font.lineHeight) / 4;NSMutableAttributedString *attr4 = [[NSMutableAttributedString alloc] initWithString:@"普通文本不偏 下划线不偏\n"];attr4.yy_font = font;attr4.yy_maximumLineHeight = 22;attr4.yy_minimumLineHeight = 22;attr3.yy_underlineStyle = NSUnderlineStyleSingle;[Text appendAttributedString:attr1];[Text yy_appendString:@" "];[Text appendAttributedString:attr2];[Text yy_appendString:@" "];[Text appendAttributedString:attr3];[Text yy_appendString:@" "];[Text appendAttributedString:attr4];label.attributedText = Text;[label sizeToFit];[self.view addSubview:label];