zoukankan      html  css  js  c++  java
  • iOS学习之NSAttributedString(富文本)

     NSAttributedString 叫做富文本,是一种带有属性的字符串,通过它可以轻松的在一个字符串中表现出多种字体、字号、字体大小等各不相同的风格,还可以对段落进行格式化,一般都是对可变富文本(NSMutableAttributedString)进行一些操作

    一、NSMutableAttributedString 类的部分常用方法

    复制代码
    // 在一定范围中添加单个文字属性
    // 参数1:字符属性名
    // 参数2:属性值
    // 参数3:范围
    - (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;
    
    // 在一定范围中使用字典添加多个文字属性
    // 参数1:属性字典
    // 参数2:范围
    - (void)addAttributes:(NSDictionary<NSString *, id> *)attrs range:(NSRange)range;
    
    // 在一定范围中删除文字具有的某个文字属性
    // 参数1:字符属性名
    // 参数2:范围
    - (void)removeAttribute:(NSString *)name range:(NSRange)range;
    
    // 在一定范围中替换字符串
    // 参数1:范围
    // 参数2:要替换的字符串
    - (void)replaceCharactersInRange:(NSRange)range withAttributedString:(NSAttributedString *)attrString;
    
    // 在对应的角标处插入富文本
    // 参数1:要插入的字符串
    // 参数2:要插入的角标位置
    - (void)insertAttributedString:(NSAttributedString *)attrString atIndex:(NSUInteger)loc;
    
    // 将某个富文本拼接到后面
    // 参数:要拼接的字符串
    - (void)appendAttributedString:(NSAttributedString *)attrString;
    
    // 删除一定范围中的字符
    // 参数:范围
    - (void)deleteCharactersInRange:(NSRange)range;
    
    // 将字符串全部置换为另一个富文本字符串
    // 参数:置换后的富文本字符串
    - (void)setAttributedString:(NSAttributedString *)attrString;
    复制代码

    二、字符属性

     1.NSString *const NSFontAttributeName(字体):

      该属性所对应的值是一个 UIFont 对象。该属性用于改变一段文本的字体。如果不指定该属性,则默认为12-point Helvetica(Neue)。

     2.NSString *const NSParagraphStyleAttributeName(段落):

      该属性所对应的值是一个 NSParagraphStyle 对 象。该属性在一段文本上应用多个属性。如果不指定该属性,则默认为 NSParagraphStyle 的 defaultParagraphStyle 方法返回的默认段落属性。想要了解NSParagraphStyle可以自行百度学习,在这里不详细描述。注意:lable的numberOfLines 属性必须设置为0,段落样式才能生效。

     3.NSString *const NSForegroundColorAttributeName(字体颜色):

      该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的字体颜色。如果不指定该属性,则默认为黑色。

     4.NSString *const NSBackgroundColorAttributeName(字体背景色):

      该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的背景颜色。如果不指定该属性,则默认无背景色。

     5.NSString *const NSLigatureAttributeName(连字符):

      该属性所对应的值是一个 NSNumber 对象(整数)。连体字符是指某些连在一起的字符,它们采用单个的图元符号。0 表示没有连体字符。1 表示使用默认的连体字符。2表示使用所有连体符号。默认值为 1(注意,iOS 不支持值为 2)。

     6.NSString *const NSKernAttributeName(字间距):

      该属性所对应的值是一个 NSNumber 对象(整数)。连体字符是指某些连在一起的字符,它们采用单个的图元符号。0 表示没有连体字符。1 表示使用默认的连体字符。2表示使用所有连体符号。默认值为 1(注意,iOS 不支持值为 2)。

     7.NSString *const NSStrikethroughStyleAttributeName(删除线):

      该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上删除线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。

     8.NSString *const NSUnderlineStyleAttributeName(下划线):

      该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上下划线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。

     9.NSString *const NSStrokeColorAttributeName(边线颜色):

       该属性所对应的值是一个 UIColor 对象。如果该属性不指定(默认),则等同于 NSForegroundColorAttributeName。否则,指定为删除线或下划线颜色。更多细节见“Drawing attributedstrings that are both filled and stroked”。

     10.NSString *const NSStrokeWidthAttributeName(边线宽度):

      该属性所对应的值是一个 NSNumber 对象(小数)。该值改变描边宽度(相对于字体size 的百分比)。默认为 0,即不改变。正数只改变描边宽度。负数同时改变文字的描边和填充宽度。例如,对于常见的空心字,这个值通常为3.0。

     11.NSString *const NSShadowAttributeName(阴影):

      该属性所对应的值是一个 NSShadow 对象。默认为 nil。

     12.NSString *const NSVerticalGlyphFormAttributeName(横竖排版):

      该属性所对应的值是一个 NSNumber 对象(整数)。0 表示横排文本。1 表示竖排文本。在 iOS 中,总是使用横排文本,0 以外的值都未定义

     三、代码示例

     在这里给大家举了几个简单的例子,有兴趣的可以尝试其余属性的效果。

    • 字符串没有添加属性
        NSString *contentStr = @"Hello World!";
        
        // 初始化属性字符串
        NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:[contentStr stringByAppendingString:@"
    
    "]];

    • 添加单个属性(以字体颜色和字体大小为例)
        [attrStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(6, 6)];
        [attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:25] range:NSMakeRange(0, 12)];

    • 使用属性字典添加多个属性
       [attrStr addAttributes:@{
                                 NSForegroundColorAttributeName : [UIColor yellowColor],
                                 NSBackgroundColorAttributeName : [UIColor lightGrayColor]
                                 }
                         range:NSMakeRange(0,6)];

    • 删除属性
        [attrStr removeAttribute:NSForegroundColorAttributeName range:NSMakeRange(6, 3)];
        [attrStr removeAttribute:NSBackgroundColorAttributeName range:NSMakeRange(5, 1)];

    字符串全部替换

     

       NSAttributedString *str = [[NSAttributedString alloc] initWithString:@"123"];
       [attrStr setAttributedString:str];

     

     

     

     以上是部分方法的使用,大家有兴趣的可以自己试试其他的方法。

  • 相关阅读:
    Android基础笔记(十八)- Fragment
    fedora20配置静态ip
    读《编程之美》励志篇
    官方教程Stealth学习笔记(一)
    从头认识Spring-2.4 基于java的标准注解装配-@Inject-限定器@Named
    POJ2186 Popular Cows [强连通分量|缩点]
    HDU2767Proving Equivalences[强连通分量 缩点]
    POJ1236Network of Schools[强连通分量|缩点]
    [USACO14OPEN] Dueling GPS's[最短路建模]
    洛谷2448 无尽的生命[树状数组 离散化]
  • 原文地址:https://www.cnblogs.com/crazygeek/p/5578732.html
Copyright © 2011-2022 走看看