欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

ios-给AttributedString添加属性以及如何去取

程序员文章站 2022-03-11 15:27:49
ios-给AttributedString添加属性以及如何去取,有的时候我们可能会需要给AttributedString也就是属性字符串设置属性,然后在另外一个地方进行处理,我们也...

ios-给AttributedString添加属性以及如何去取,有的时候我们可能会需要给AttributedString也就是属性字符串设置属性,然后在另外一个地方进行处理,我们也可以通过这个方式进行传值,具体操作可以如下所示这里我们是先创建一个数组,创建完毕之后,我们再去通过设置属性,这样我们可以在另外一个地方可以去获取到它的值,然后通过遍历可以做相应的操作。下面的一个方法这里面的range,传入的是一个地址,这样我们再把range给取出来就可以得到的是在下面这个index索引处所得到的属性的设置的范围,也可以这么解释effectiveRange参数是引用参数,该参数反映了在所检索的位置上,字符串中具有当前的属性的范围。

- (nullable id)attribute:(NSAttributedStringKey)attrName atIndex:(NSUInteger)location effectiveRange:(nullable NSRangePointer)
range;

用法如下所示
    NSArray * array = [[NSArray alloc]init];
    array=@[@(1)];
    
    
    NSMutableAttributedString * attributedText = [[NSMutableAttributedString alloc]init];
    
    NSAttributedString * attributedString = [[NSAttributedString alloc]initWithString:@"哈哈哈"];
    
    [attributedText appendAttributedString:attributedString];
    
    NSAttributedString * attributedString1 = [[NSAttributedString alloc]initWithString:@"没没没"];
    [attributedText appendAttributedString:attributedString1];
    
    [attributedText addAttribute:@"NSAttributeKey" value:array range:NSMakeRange(0, 1)];
    
    [attributedText enumerateAttributesInRange:NSMakeRange(0, attributedText.length) options:0 usingBlock:^(NSDictionary
     * _Nonnull attrs, NSRange range, BOOL * _Nonnull stop) {
        
        //NSLog(@"%@",attrs[@"NSAttributeKey"]);
        id value = [attributedText attribute:@"NSAttributeKey" atIndex:0 effectiveRange:NULL];
        NSLog(@"%@",value);
    }];