iOS 富文本NSMutableAttributedString整理

初始化

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 (^)(NSDictionaryattrs,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
zebra 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时还是感到开心,有空时,我会上传多几篇文章,和兄弟们一起学习



作者:wxzhi
链接:http://www.jianshu.com/p/2763a57c93c1
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值