着色链接在同一NSAttributedString中具有多种不同颜色

mjh*_*mjh 2 interface-builder uikit ios

我正在使用TTTAttributedLabel来检测iOS 6项目中样式UILabel(使用NSAttributedString)中链接的点击次数.我希望能够为我的标签中的链接添加交替颜色 ; 我可以为不同的链接范围手动设置不同的颜色,只要库为我处理用户触摸的链接检测.似乎TTTAttributedLabel该类最后应用链接样式,因此特定范围的文本样式将被为类实例设置的单个链接样式覆盖.

即将潜入并尝试修改TTTAttributedLabel代码(要么不应用链接样式,要么之后应用我自己的样式范围),我想我会在这里询问是否有人有更好的想法来考虑实现这一点.不同的库可能支持同一标签中的各种颜色的链接范围,开箱即用?

mjh*_*mjh 5

这已经得到支持,只需使用:

- (void)addLinkWithTextCheckingResult:(NSTextCheckingResult *)result
                           attributes:(NSDictionary *)attributes;
Run Code Online (Sandbox Code Playgroud)

这使您可以基于每个链接指定自己的属性.例如,使用linkAttributes字典进行链接的一次性着色:

if (linkAttributes) {
    [self addLinkWithTextCheckingResult:[NSTextCheckingResult linkCheckingResultWithRange:linkRange URL:[NSURL URLWithString:linkText]] attributes:linkAttributes];
}
else {
    [self addLinkToURL:[NSURL URLWithString:linkText] withRange:linkRange];
}
Run Code Online (Sandbox Code Playgroud)

链接属性字典使用中定义的键NSAttributedString.h.例如:

linkAttributes = @{
    NSForegroundColorAttributeName: [UIColor greenColor],
    NSUnderlineStyleAttributeName: @(NSUnderlineStyleNone)
};
Run Code Online (Sandbox Code Playgroud)