美文网首页iOS日常
NSAttributedString - 属性字符串(富文本)

NSAttributedString - 属性字符串(富文本)

作者: 居然是村长 | 来源:发表于2016-03-11 23:13 被阅读690次

    1 Foundation 中有属性字符串
    2 UIKit 中对属性字符串定义一些常用的类型

    NSAttributedString 一般创建

    一般创建 通过 NSMutableAttributedString 添加各种属性,虽然代码比较多,但是跟丰富一点。

        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"asdfghjkl"];
        
        [attributedString addAttribute:NSUnderlineStyleAttributeName//下划线
                                 value:[NSNumber numberWithInt:NSUnderlineStyleThick]//类型。也可以数值 表示粗细
                                 range:NSMakeRange(8, 8)];
    
        [attributedString addAttribute:NSUnderlineColorAttributeName//下划线。颜色
                                 value:[UIColor redColor]
                                 range:NSMakeRange(8, 8)];
    
    // 类似的 AttributeteName 还有很多,对同一个NSMutableAttributedString 可以添加多个属性,具体下面解释。
    
    NSFontAttributeName 字体 UIFont
    NSForegroundColorAttributeName 字体颜色 UIColor
    NSBackgroundColorAttributeName 字背景颜色 UIColor
    NSUnderlineStyleAttributeName 下划线粗细,类型 NSNumber
    NSUnderlineColorAttributeName 下划线颜色 UIColor
    NSStrikethroughStyleAttributeName 删除线粗细,类型 NSNumber
    NSStrikethroughColorAttributeName 删除线颜色 UIColor
    NSBaselineOffsetAttributeName 上下偏移 NSNumber
    NSObliquenessAttributeName 倾斜 NSNumber
    NSExpansionAttributeName 横向拉伸压缩 NSNumber
    NSStrokeWidthAttributeName 描边宽度 NSNumber
    NSStrokeColorAttributeName 描边颜色 UIColor
    NSShadowAttributeName 字符阴影 NSShadow 
    NSLinkAttributeName 网址链接 NSURL
    NSParagraphStyleAttributeName 段落 NSParagraphStyle
    以上还不够用的话,研究更多下面的把。
    
    未知
    NSLigatureAttributeName
    NSKernAttributeName
    NSTextEffectAttributeName NSTextEffectLetterpressStyle
    NSAttachmentAttributeName
    NSWritingDirectionAttributeName
    NSVerticalGlyphFormAttributeName
    
    
    还有更多 文件的富文本格式 0.0 NSAttributedStringDocumentFormats
    
    

    NSAttributedString 快速创建

    与一般创建类似,只是把各种属性,以key - value 形式揉成字典,NSAttributedString创建成字符串,

        UILabel *testLabel = [UILabel new];
        NSDictionary *paramas = @{NSUnderlineStyleAttributeName:@(2),
                                  NSUnderlineColorAttributeName:[UIColor redColor]
                                  };
        NSAttributedString *att = [[NSAttributedString alloc] initWithString:@"testaaa" attributes:paramas];    
    

    Foundation 中的 一些属性字符串操作

    NSAttributedString 部分
    
    // 截取
        NSAttributedString *att2 = [att1 attributedSubstringFromRange:NSMakeRange(0, 2)];
    
    // 比较
    [att1 isEqualToAttributedString att2];
    
    // 遍历 某种属性的字符串 位置
        [attributedString enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, 3) options:NSAttributedStringEnumerationLongestEffectiveRangeNotRequired usingBlock:^(id  _Nullable value, NSRange range, BOOL * _Nonnull stop) {
            NSLog(@"- - - - - -%zi",range.location); 
        }];
    
    
    NSMutableAttributedString 部分
    // 有更多的类似字符串的 替换,插入,删除的操作,不写了
    

    UIKit 拓展操作

    NSAttributedStringDocumentFormats 水好深。。

    1

    相关文章

      网友评论

      本文标题:NSAttributedString - 属性字符串(富文本)

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