美文网首页iOS开发程序员@IT·互联网
iOS 富文本NSMutableAttributedString

iOS 富文本NSMutableAttributedString

作者: wxzhi | 来源:发表于2017-05-04 19:11 被阅读702次

    初始化

    1.常用:

    NSMutableAttributedString *attrStr =[[NSMutableAttributedString alloc] initWithString:@"text"];

    2.将需要编辑的内容转换成data,初始化成需要的类型,再转换为富文本。

    例如:加载HTML文本,将含有html标签的字符串,初始化为HTML类型
    NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithData:[@"<html>text<\html>" dataUsingEncoding: NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];

    • NSDocumentTypeDocumentAttribute有三个key
      NSPlainTextDocumentType -----普通文本
      NSRTFTextDocumentType -----富文本
      NSRTFDTextDocumentType -----带附件的富文本
      NSHTMLTextDocumentType -----这个可以加载HTML格式的文本
    • NSDocumentTypeDocumentAttribute编码转换类型
      NSPlainTextDocumentType
      NSRTFTextDocumentType
      NSRTFDTextDocumentType
      NSHTMLTextDocumentType

    富文本总结

    常用方法

    1.获取指定位置上的属性信息,并返回与指定位置属性相同并且连续的字符串的范围信息。

    • -(NSDictionary*)attributesAtIndex:(NSUInteger)index effectiveRange:(NSRangePointer)aRange

    2.与另一个NSAttributedString 对象做对比返回bool值。

    • -(BOOL)isEqualToAttributedString:(NSAttributedString *)otherString

    3.获取对象Substring

    • -(NSAttributedString *)attributedSubstringFromRange:(NSRange)aRange

    4.去除某一属性

    • -(void)removeAttribute:(NSString *)name range:(NSRange)range;

    5.指定范围内的子串,遍历子串上覆盖的属性信息

    • -(void)enumerateAttribute:(NSString*)attrName inRange:(NSRange)enumerationRange options:(NSAttributedStringEnumerationOptions)opts usingBlock:(void (^)(id value,NSRange range,BOOL *stop))block

    6.遍历指定范围内的属性信息和range信息

    • -(void)enumerateAttributesInRange:(NSRange)enumerationRange options:(NSAttributedStringEnumerationOptions)opts usingBlock:(void (^)(NSDictionary*attrs,NSRangerange,BOOL *stop))block

    7.开始编辑

    • -(void)beginEditing;

    8.结束编辑

    • -(void)endEditing;

    9.拼接attrString

    • -(void)appendAttributedString:(NSAttributedString *)attrString;

    10.插入attrString

    • -(void)insertAttributedString:(NSAttributedString *)attrString atIndex:(NSUInteger)loc;

    11.替换

    • -(void)replaceCharactersInRange:(NSRange)range withAttributedString:(NSAttributedString *)attrString;

    12.删除字符

    • -(void)deleteCharactersInRange:(NSRange)range;

    Attribute属性

    属性 作用 value对应对象
    NSFontAttributeName 字体 UIFont
    NSParagraphStyleAttributeName 段落样式 NSParagraphStyle
    NSForegroundColorAttributeName 前景色 UIColor
    NSBackgroundColorAttributeName 背景色 UIColor
    NSObliquenessAttributeName 倾斜 NSNumber
    NSExpansionAttributeName 扁平化 NSNumber:扁平比例
    NSStrokeWidthAttributeName 填充(描边,加粗) NSNumber:正数为空心(描边),负数为填充(加粗)
    NSStrokeColorAttributeName 填充颜色 UIColor
    NSKernAttributeName 间距 NSNumber
    NSUnderlineStyleAttributeName 下划线 枚举:默认为NSUnderlineStyleNone
    NSUnderlineColorAttributeName 下划线颜色 UIColor
    NSStrikethroughStyleAttributeName 删除线 枚举:默认为NSUnderlineStyleNone
    NSStrikethroughColorAttributeName 删除线颜色 UIColor
    NSLigatureAttributeName 连笔 NSNumber(0或1)
    NSShadowAttributeName 阴影 NSShawdow
    NSTextEffectAttributeName 设置文本特殊效果,目前只有图版印刷效果可以用 NSString
    NSAttachmentAttributeName 设置文本附件,常用插入图片 NSTextAttachment
    NSLinkAttributeName 链接 NSURL和NSString
    NSBaselineOffsetAttributeName 基准线偏移 NSNumber
    NSWritingDirectionAttributeName 文字方向 NSArray<NSNumber >
    NSVerticalGlyphFormAttributeName 水平或者竖直文本 NSNumber @1或@(YES)竖直 @0或@(NO)水平

    段落样式(常用的)

    NSMutableParagraphStyle *style = [[NSMutableParagraphStyle 
    alloc]init];
    style.lineSpacing = 10; // 行距
    style.paragraphSpacing = 20; // 段距
    style.firstLineHeadIndent = 30; // 首行缩进
    

    阴影

    NSShadow *shadow = [[NSShadow alloc]init];
    shadow.shadowOffset = CGSizeMake(2, 2);
    shadow.shadowColor = [UIColor orangeColor];
    shadow.shadowBlurRadius = 1;
    

    用法

    NSMutableAttributedString *attrStr = [[NSMutableAttributedString 
    alloc] initWithString:label];
    NSRange range = NSMakeRange(0, attrStr.length);
    // 字体倾斜
    [attrStr addAttribute:NSObliquenessAttributeName value:@(0.5) range:range];
    // 字体加粗
    [attrStr addAttribute:NSStrokeWidthAttributeName value:@(-3) range:range];
    // 设置字体
    [attrStr addAttribute:NSFontAttributeName value:[UIFont 
    fontWithName:@"JingLeiFontName" size:16] range:range];
    label.attributedText = attrStr;
    

    ps:平常基本不怎么发布文章,这算是我在简书的处女作了,但是看到有兄弟们mark时还是感到开心,有空时,我会上传多几篇文章,和兄弟们一起学习

    参考链接

    NSAttributedString使用
    AttributeString 属性
    富文本NSAttributedString与NSMutableAttributedString

    相关文章

      网友评论

      本文标题:iOS 富文本NSMutableAttributedString

      本文链接:https://www.haomeiwen.com/subject/teddtxtx.html