NSMutableAttributedString的一些封裝

改變某些文字的顏色 并單獨設置其字體

/**
 *  改變某些文字的顏色 并單獨設置其字體
 *
 *  @param font        設置的字體
 *  @param color       顏色
 *  @param totalString 總的字符串
 *  @param subArray    想要變色的字符數組
 *
 *  @return 
 */
+ (NSMutableAttributedString *)ls_changeFontAndColor:(UIFont *)font Color:(UIColor *)color TotalString:(NSString *)totalString SubStringArray:(NSArray *)subArray {
    NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:totalString];
    for (NSString *rangeStr in subArray) {
        NSRange range = [totalString rangeOfString:rangeStr options:NSBackwardsSearch];
        [attributedStr addAttribute:NSForegroundColorAttributeName value:color range:range];
        [attributedStr addAttribute:NSFontAttributeName value:font range:range];
    }
    return attributedStr;
}

同時更改行間距和字間距

/**
 *  同時更改行間距和字間距
 *
 *  @param totalString 需要改變的字符串
 *  @param lineSpace   行間距
 *  @param textSpace   字間距
 *
 *  @return 
 */
+ (NSMutableAttributedString *)ls_changeLineAndTextSpaceWithTotalString:(NSString *)totalString LineSpace:(CGFloat)lineSpace textSpace:(CGFloat)textSpace {
    NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:totalString];
    NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    [paragraphStyle setLineSpacing:lineSpace];
    [attributedStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [totalString length])];
    long number = textSpace;
    CFNumberRef num = CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt8Type,&number);
    [attributedStr addAttribute:(id)kCTKernAttributeName value:(__bridge id)num range:NSMakeRange(0,[attributedStr length])];
    CFRelease(num);
    return attributedStr;
}

單純改變段落的行間距

/**
 *  單純改變段落的行間距
 *
 *  @param totalString 需要更改的字符串
 *  @param lineSpace   行間距
 *
 *  @return 
 */
+ (NSMutableAttributedString *)ls_changeLineSpaceWithTotalString:(NSString *)totalString LineSpace:(CGFloat)lineSpace {
    NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:totalString];
    NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    [paragraphStyle setLineSpacing:lineSpace];
    [attributedStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [totalString length])];
    return attributedStr;
}

單純改變句子的字間距(需要 <CoreText/CoreText.h>

/**
 *  單純改變句子的字間距(需要 <CoreText/CoreText.h>)
 *
 *  @param totalString 需要更改的字符串
 *  @param space       字間距
 *
 *  @return 
 */
+ (NSMutableAttributedString *)ls_changeSpaceWithTotalString:(NSString *)totalString Space:(CGFloat)space {
    NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:totalString];
    long number = space;
    CFNumberRef num = CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt8Type,&number);
    [attributedStr addAttribute:(id)kCTKernAttributeName value:(__bridge id)num range:NSMakeRange(0,[attributedStr length])];
    CFRelease(num);
    return attributedStr;
}

單純改變一句話中的某些字的顏色(一種顏色)

/**
 *  單純改變一句話中的某些字的顏色(一種顏色)
 *
 *  @param color    需要改變成的顏色
 *  @param totalStr 總的字符串
 *  @param subArray 需要改變顏色的文字數組(要是有相同的 只取第一個)
 *
 *  @return 
 */
+ (NSMutableAttributedString *)ls_changeCorlorWithColor:(UIColor *)color TotalString:(NSString *)totalStr SubStringArray:(NSArray *)subArray {
    NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:totalStr];
    for (NSString *rangeStr in subArray) {
        NSRange range = [totalStr rangeOfString:rangeStr options:NSBackwardsSearch];
        [attributedStr addAttribute:NSForegroundColorAttributeName value:color range:range];
    }
    return attributedStr;
}

相關各屬性對應值:
NSFontAttributeName :字體字號value值:UIFont類型

NSParagraphStyleAttributeName : 段落樣式value值:NSParagraphStyle類型(其屬性如下)

lineSpacing 行間距(具體用法可查看上面的設置行間距API)

paragraphSpacing 段落間距

alignment 對齊方式

firstLineHeadIndent 指定段落開始的縮進像素

headIndent 調整全部文字的縮進像素

NSForegroundColorAttributeName 字體顏色value值:UIColor類型

NSBackgroundColorAttributeName 背景顏色value值:UIColor類型

NSObliquenessAttributeName 字體粗傾斜value值:NSNumber類型

NSExpansionAttributeName 字體加粗value值:NSNumber類型(比例) 0就是不變 1增加一倍

NSKernAttributeName 字間距value值:CGFloat類型

NSUnderlineStyleAttributeName 下劃線value值:1或0

NSUnderlineColorAttributeName 下劃線顏色value值:UIColor類型

NSStrikethroughStyleAttributeName 刪除線value值:1或0

NSStrikethroughColorAttributeName 刪除線顏色value值:UIColor類型

NSStrokeColorAttributeName 字體顏色value值:UIColor類型

NSStrokeWidthAttributeName 字體描邊value值:CGFloat

NSLigatureAttributeName 連筆字value值:1或0

NSShadowAttributeName 陰影value值:NSShawdow類型(下面是其屬性)

shadowOffset 影子與字符串的偏移量

shadowBlurRadius 影子的模糊程度

shadowColor 影子的顏色

NSTextEffectAttributeName 設置文本特殊效果,目前只有圖版印刷效果可用value值:NSString類型

NSAttachmentAttributeName 設置文本附件value值:NSTextAttachment類型(沒研究過,可自行百度研究)

NSLinkAttributeName 鏈接value值:NSURL (preferred) or NSString類型

NSBaselineOffsetAttributeName 基準線偏移value值:NSNumber類型

NSWritingDirectionAttributeName 文字方向 分別代表不同的文字出現方向value值:@[@(1),@(2)]

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 轉載:http://blog.csdn.net/u010330109/article/details/518821...
    F麥子閱讀 4,200評論 0 3
  • 本文摘自IOS控件學習:UILabel常用屬性與用法 - The important thing in life ...
    nuannuan_nuan閱讀 1,064評論 0 1
  • //學習內容 /* 1.控件 UIView UILabel UITextField UITextView UIBu...
    Matte閱讀 1,166評論 0 0
  • 朝代:唐代作者:王昌齡原文:閨中少婦不知愁,春日凝妝上翠樓。忽見陌頭楊柳色,悔教夫婿覓封侯。 改寫 清晨,暖意融融...
    吳小巫閱讀 2,295評論 0 1
  • 文/塵間紅葉 01 清晨散步時,路過一座石橋,站在橋上,發現河的東西兩岸,分布著一座道觀和一座陵園。 道觀是個陳舊...
    塵間紅葉閱讀 455評論 11 8