iOS开发(OC)

ios利用YYLabel在可换行的文本前加带背景色的标签

2018-11-02  本文已影响121人  颜小宋

类似效果图

YYLabel确实是一个很有用的控件

//外部使用可直接调用此方法,简单方便

subStr即前面带背景色标签的文本

title即标签之后的主标题

titleFont 主标题的字号

+ (NSMutableAttributedString*)setPartialTextFillColorWithSubStr:(NSString*)subStr title:(NSString*)title titleFont:(CGFloat)titleFont{

    NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc]init];

    paragraph.alignment=NSTextAlignmentLeft;

    paragraph.lineSpacing=3;

    paragraph.hyphenationFactor=1.0;

    NSMutableAttributedString*attrStr = [selfsetString:titleattributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:titleFont],NSParagraphStyleAttributeName: paragraph}subStr:subStrfillColor:goldenYellowinsets:UIEdgeInsetsMake(-1, -2, -1, -2)subStrColor:CenColorsubStrFontSize:titleFont-2];

    returnattrStr;

}

+ (NSMutableAttributedString*)setString:(NSString*)string attributes:(nullableNSDictionary *)attributes subStr:(NSString*)subStr fillColor:(NSInteger)fillColor insets:(UIEdgeInsets)insets subStrColor:(NSInteger)subStrColor subStrFontSize:(CGFloat)subStrFontSize{

//将标签文本和主标题文本拼接

    NSString*itemName = [NSStringstringWithFormat:@" %@ %@",subStr,string];

    NSMutableAttributedString *titleAttrStr = [[NSMutableAttributedString alloc] initWithString:itemName attributes:attributes];

//设置标签的背景色

   YYTextBorder *border = [YYTextBorder new];

    border.fillColor= [UIColorcolorWithHex:fillColor];

    border.insets= insets;

   NSIntegerlength = subStr.length+1;

    [titleAttrStryy_setTextBackgroundBorder:borderrange:NSMakeRange(0, length)];

//设置标签的文本颜色

    [titleAttrStryy_setColor:[UIColorcolorWithHex:subStrColor]range:NSMakeRange(0, length)];

//设置标签文本的字号

    [titleAttrStryy_setFont:[UIFontsystemFontOfSize:subStrFontSize]range:NSMakeRange(0, length)];

    returntitleAttrStr;

}

上一篇下一篇

猜你喜欢

热点阅读