iOS OC字符串處理

創(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;
    
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容