2

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

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

4

1 回答 1

5

这已经被支持,只需使用:

- (void)addLinkWithTextCheckingResult:(NSTextCheckingResult *)result
                           attributes:(NSDictionary *)attributes;

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

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

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

linkAttributes = @{
    NSForegroundColorAttributeName: [UIColor greenColor],
    NSUnderlineStyleAttributeName: @(NSUnderlineStyleNone)
};
于 2013-05-15T09:59:53.857 回答