美文网首页
iOS-NSAttributedString的描述介绍

iOS-NSAttributedString的描述介绍

作者: malgee | 来源:发表于2016-12-09 15:23 被阅读11次

    字符属性可以应用于 attributedstring 的文本中。

     NSString *const NSFontAttributeName;(字体大小)
    
     NSString *const NSParagraphStyleAttributeName;(段落)
    
     NSString *const NSForegroundColorAttributeName;(字体颜色)
    
     NSString *const NSBackgroundColorAttributeName;(字体背景色)
    
     NSString *const NSLigatureAttributeName;(连字符)
    
     NSString *const NSKernAttributeName;(字间距)
    
     NSString *const NSStrikethroughStyleAttributeName;(删除线)
    
     NSString *const NSUnderlineStyleAttributeName;(下划线)
    
     NSString *const NSStrokeColorAttributeName;(边线颜色)
    
     NSString *const NSStrokeWidthAttributeName;(边线宽度)
    
     NSString *const NSShadowAttributeName;(阴影)
    
     NSString *const NSVerticalGlyphFormAttributeName;(横竖排版)
    
     NSString *const NSObliquenessAttributeName;(文本倾斜)
    
     NSString *const NSExpansionAttributeName;(文本扁平化)
    
    富文本属性 介绍
    NSFontAttributeName(字体大小) 该属性所对应的值是一个 UIFont 对象。该属性用于改变一段文本的字体。如果不指定该属性,则默认为12-point Helvetica(Neue)
    NSParagraphStyleAttributeName(段落) 该属性所对应的值是一个 NSParagraphStyle 对象。该属性在一段文本上应用多个属性。如果不指定该属性,则默认为defaultParagraphStyle。
    NSForegroundColorAttributeName(字体颜色) 该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的字体颜色。如果不指定该属性,则默认为黑色。
    NSBackgroundColorAttributeName(字体背景色) 该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的背景颜色。如果不指定该属性,则默认无背景色。
    NSLigatureAttributeName(连字符) 该属性所对应的值是一个 NSNumber 对象(整数)。连体字符是指某些连在一起的字符,它们采用单个的图元符号。0 表示没有连体字符。1 表示使用默认的连体字符。2表示使用所有连体符号。默认值为1(注意,iOS 不支持值为2)
    NSKernAttributeName(字间距) 该属性所对应的值是一个 NSNumber 对象(整数)。字母紧排指定了用于调整字距的像素点数。字母紧排的效果依赖于字体。值为0 表示不使用字母紧排。默认值为0。
    NSStrikethroughStyleAttributeName(删除线) 该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上删除线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。
    NSUnderlineStyleAttributeName(下划线) 该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上下划线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。
    NSStrokeColorAttributeName(边线颜色) 该属性所对应的值是一个 UIColor 对象。如果该属性不指定(默认),则等同于NSForegroundColorAttributeName。否则,指定为删除线或下划线颜色。
    NSStrokeWidthAttributeName(边线宽度) 该属性所对应的值是一个 NSNumber 对象(小数)。该值改变描边宽度(相对于字体size 的百分比)。默认为0,即不改变。正数只改变描边宽度。负数同时改变文字的描边和填充宽度。例如,对于常见的空心字,这个值通常为3.0。
    NSShadowAttributeName(阴影) 该属性所对应的值是一个 NSShadow 对象。默认为nil。
    NSVerticalGlyphFormAttributeName(横竖排版) 该属性所对应的值是一个 NSNumber 对象(整数)。0 表示横排文本。1 表示竖排文本。在iOS 中,总是使用横排文本,0 以外的值都未定义。
    NSObliquenessAttributeName(文本倾斜) 该属性所对应的值是一个 NSNumber 对象(float)默认为0
    NSExpansionAttributeName(文本扁平化) 该属性所对应的值是一个 NSNumber 对象(float)默认为0

    代码案例:

    设置字体大小、文字颜色、字间距、文字背景色

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        NSString *content = @"好吗 一句话就哽住了喉 城市当背景的海市蜃楼 我们像分隔成一整个宇宙 再见都化作乌有 我们说好决不放开相互牵的手 可现实说过有爱还不够走到分岔的路口 你向左我向右 我们都倔强地不曾回头 我们说好就算分开一样做朋友 时间说我们从此不可能再问候 人群中再次邂逅";
    
        NSMutableDictionary *attDic = [NSMutableDictionary dictionary];
        [attDic setValue:[UIFont systemFontOfSize:16] forKey:NSFontAttributeName];      // 字体大小
        [attDic setValue:[UIColor redColor] forKey:NSForegroundColorAttributeName];     // 字体颜色
        [attDic setValue:@10 forKey:NSKernAttributeName];                                // 字间距
        [attDic setValue:[UIColor cyanColor] forKey:NSBackgroundColorAttributeName];    // 设置字体背景色
        
        NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:content attributes:attDic];
        
        CGFloat contentH = [attStr boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX)
                                                options:NSStringDrawingUsesLineFragmentOrigin context:nil].size.height;                     // 自动计算文本高度
        UILabel *txtLbl = [[UILabel alloc] init];
    
        txtLbl.frame = CGRectMake(100, 100, 200, contentH);
        txtLbl.numberOfLines = 0;
        txtLbl.attributedText = attStr;
        txtLbl.backgroundColor = [UIColor redColor];
        self.view.userInteractionEnabled = YES;
        txtLbl.userInteractionEnabled = YES;
        [self.view addSubview:txtLbl];
    }
    
    

    运行效果图 img1

    img1.png

    设置行间距、删除线、下划线

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        NSString *content = @"好吗 一句话就哽住了喉 城市当背景的海市蜃楼 我们像分隔成一整个宇宙 再见都化作乌有 我们说好决不放开相互牵的手 可现实说过有爱还不够走到分岔的路口 你向左我向右 我们都倔强地不曾回头 我们说好就算分开一样做朋友 时间说我们从此不可能再问候 人群中再次邂逅";
    
        NSMutableDictionary *attDic = [NSMutableDictionary dictionary];
        [attDic setValue:[UIFont systemFontOfSize:16] forKey:NSFontAttributeName];      // 字体大小
        
        NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:content attributes:attDic];
       
        NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];       // 设置行之间的间距
        style.lineSpacing = 20;
        [attStr addAttribute:NSParagraphStyleAttributeName value:style range: NSMakeRange(0, content.length)];
        
        [attStr addAttribute:NSStrikethroughStyleAttributeName value:@2 range:NSMakeRange(4, 10)]; // 删除线
        
        [attStr addAttribute:NSUnderlineStyleAttributeName value:@2 range:NSMakeRange(20, 30)]; // 下划线
         
        CGFloat contentH = [attStr boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX)
                                                options:NSStringDrawingUsesLineFragmentOrigin context:nil].size.height;                     // 自动计算文本高度
        UILabel *txtLbl = [[UILabel alloc] init];
    
        txtLbl.frame = CGRectMake(100, 100, 200, contentH);
        txtLbl.numberOfLines = 0;
        txtLbl.attributedText = attStr;
        txtLbl.backgroundColor = [UIColor redColor];
        self.view.userInteractionEnabled = YES;
        txtLbl.userInteractionEnabled = YES;
        [self.view addSubview:txtLbl];
        
        
    }
    

    运行效果图 img2

    img2.png

    设置边线宽度、边线颜色

    - (void)viewDidLoad {
        [super viewDidLoad];
      
        NSString *content = @"好吗 一句话就哽住了喉 城市当背景的海市蜃楼 我们像分隔成一整个宇宙 再见都化作乌有 我们说好决不放开相互牵的手 可现实说过有爱还不够走到分岔的路口 你向左我向右 我们都倔强地不曾回头 我们说好就算分开一样做朋友 时间说我们从此不可能再问候 人群中再次邂逅";
        
        NSMutableDictionary *attDic = [NSMutableDictionary dictionary];
        
        [attDic setValue:[UIFont systemFontOfSize:21] forKey:NSFontAttributeName];                  // 字体大小
        [attDic setValue:[UIColor blueColor] forKey:NSForegroundColorAttributeName];                // 字体颜色
    
        [attDic setValue:[UIColor redColor] forKey:NSStrokeColorAttributeName];                     // 边线颜色
        [attDic setValue:@4 forKey:NSStrokeWidthAttributeName];                                     // 边线宽度
        
    //    [attDic setValue:@0 forKey:NSVerticalGlyphFormAttributeName];               // 设置横竖排版 0 表示横排文本。1 表示竖排文本,iOS只能横排
        
        
        NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:content attributes:attDic];
        
        CGFloat contentH = [attStr boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX)
                                                options:NSStringDrawingUsesLineFragmentOrigin context:nil].size.height;                     // 自动计算文本高度
        UILabel *txtLbl = [[UILabel alloc] init];
    
        txtLbl.frame = CGRectMake(100, 100, 200, contentH);
        txtLbl.numberOfLines = 0;
        txtLbl.attributedText = attStr;
        txtLbl.backgroundColor = [UIColor cyanColor];
        self.view.userInteractionEnabled = YES;
        txtLbl.userInteractionEnabled = YES;
        [self.view addSubview:txtLbl];
    }
    

    运行效果图 img3

    img3.png

    设置设置阴影、文字链接

    - (void)viewDidLoad {
        [super viewDidLoad];
      
        NSString *content = @"好吗 一句话就哽住了喉 城市当背景的海市蜃楼 我们像分隔成一整个宇宙 再见都化作乌有 我们说好决不放开相互牵的手 可现实说过有爱还不够走到分岔的路口 你向左我向右 我们都倔强地不曾回头 我们说好就算分开一样做朋友 时间说我们从此不可能再问候 人群中再次邂逅";
        
        NSMutableDictionary *attDic = [NSMutableDictionary dictionary];
        
        [attDic setValue:[UIFont systemFontOfSize:21] forKey:NSFontAttributeName];                  // 字体大小
        [attDic setValue:[UIColor blueColor] forKey:NSForegroundColorAttributeName];                // 字体颜色
        
        NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:content attributes:attDic];
        
        NSShadow *shadow = [[NSShadow alloc]init];                              // 设置阴影
        shadow.shadowBlurRadius = 3;                                            // 模糊度
        shadow.shadowOffset = CGSizeMake(5, 5);                                 // 阴影偏移量
        shadow.shadowColor = [UIColor redColor];                                // 阴影颜色
        [attStr addAttribute:NSShadowAttributeName value:shadow range:NSMakeRange(20, 10)];
        
        [attStr addAttribute:NSLinkAttributeName value:[NSURL URLWithString:@"http://www.baidu.com"] range:NSMakeRange(5, 5)]; // 链接
        
        CGFloat contentH = [attStr boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX)
                                                options:NSStringDrawingUsesLineFragmentOrigin context:nil].size.height;                     // 自动计算文本高度
        UILabel *txtLbl = [[UILabel alloc] init];
    
        txtLbl.frame = CGRectMake(100, 100, 200, contentH);
        txtLbl.numberOfLines = 0;
        txtLbl.attributedText = attStr;
        txtLbl.backgroundColor = [UIColor cyanColor];
        self.view.userInteractionEnabled = YES;
        txtLbl.userInteractionEnabled = YES;
        [self.view addSubview:txtLbl];
        
        
    }
    
    

    运行效果图 img4

    img4.png

    重复代码太多,粘贴太麻烦,直接剪贴关键部位,其余部分和上面的一样
    文字倾斜

     [attDic setValue:@0.4 forKey:NSObliquenessAttributeName];                    // 文字倾斜
    

    运行效果图 img5

    img5.png

    文本扁平

     [attDic setValue:@0.5 forKey:NSExpansionAttributeName];                        // 文本扁平
    
    

    运行效果图 img6

    img6.png

    相关文章

      网友评论

          本文标题:iOS-NSAttributedString的描述介绍

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