創(chuàng)建
NSAttributedString
擴(kuò)展
.h文件
/// 字符串設(shè)置不同顏色和字體大小
/// @param allString 整個(gè)字符串
/// @param strings 需要修改樣式的子字符串?dāng)?shù)組
/// @param colors 顏色數(shù)組
/// @param fonts 字體數(shù)組
+ (NSAttributedString *)stringWithAllString:(NSString *)allString
subStrings:(NSArray<NSString *> * _Nullable)strings
colors:(NSArray<UIColor *> * _Nullable)colors
fonts:(NSArray<UIFont *> * _Nullable)fonts
aligment:(NSTextAlignment)aligment;
/// 字符串設(shè)置不同顏色和字體大小
/// @param allString 整個(gè)字符串
/// @param strings 需要修改樣式的子字符串?dāng)?shù)組
/// @param colors 顏色數(shù)組
/// @param fonts 字體數(shù)組
/// @param lineSpacing 行間距
+ (NSAttributedString *)stringWithAllString:(NSString *)allString
subStrings:(NSArray<NSString *> * _Nullable)strings
colors:(NSArray<UIColor *> * _Nullable)colors
fonts:(NSArray<UIFont *> * _Nullable)fonts
lineSpacing:(CGFloat)lineSpacing
aligment:(NSTextAlignment)aligment;
/// 字符串設(shè)置行間距
/// @param string 整個(gè)字符串
/// @param lineSpacing 行間距
+ (NSAttributedString *)stringWithString:(NSString *)string
lineSpacing:(CGFloat)lineSpacing
aligment:(NSTextAlignment)aligment;
.m文件
/// 字符串設(shè)置不同顏色和字體大小
+ (NSAttributedString *)stringWithAllString:(NSString *)allString
subStrings:(NSArray<NSString *> *)strings
colors:(NSArray<UIColor *> *)colors
fonts:(NSArray<UIFont *> *)fonts
aligment:(NSTextAlignment)aligment {
return [self stringWithAllString:allString subStrings:strings colors:colors fonts:fonts lineSpacing:0 aligment:aligment];
}
/// 字符串設(shè)置不同顏色和字體大小 - 可設(shè)置行間距
+ (NSAttributedString *)stringWithAllString:(NSString *)allString
subStrings:(NSArray<NSString *> *)strings
colors:(NSArray<UIColor *> *)colors
fonts:(NSArray<UIFont *> *)fonts
lineSpacing:(CGFloat)lineSpacing
aligment:(NSTextAlignment)aligment {
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
paraStyle.lineBreakMode = NSLineBreakByCharWrapping;
paraStyle.alignment = aligment;
paraStyle.lineSpacing = lineSpacing; //設(shè)置行間距
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:allString
attributes:@{NSParagraphStyleAttributeName:paraStyle,
NSKernAttributeName:@0.0f}];
if (strings.count != colors.count || strings.count != fonts.count) {
NSAssert(NO, @"字符串?dāng)?shù)組鲫竞、色值數(shù)組或字體數(shù)組的count不匹配");
return attributedString;
}
for (int i = 0; i < strings.count; i ++) {
/// 子字符串
NSString *string = strings[i];
NSRange range = [[attributedString string] rangeOfString:string];
/// 顏色
UIColor *color = colors[i];
[attributedString addAttribute:NSForegroundColorAttributeName value:color range:range];
/// 字體大小
UIFont *font = fonts[i];
[attributedString addAttribute:NSFontAttributeName value:font range:range];
}
return attributedString;
}
+ (NSAttributedString *)stringWithString:(NSString *)string
lineSpacing:(CGFloat)lineSpacing
aligment:(NSTextAlignment)aligment {
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
paraStyle.lineBreakMode = NSLineBreakByCharWrapping;
paraStyle.alignment = NSTextAlignmentLeft;
paraStyle.lineSpacing = lineSpacing; //設(shè)置行間距
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string
attributes:@{NSParagraphStyleAttributeName:paraStyle,
NSKernAttributeName:@0.0f}];
return attributedString;
}