我正在使用TTTAttributedLabel来检测iOS 6项目中样式UILabel
(使用NSAttributedString
)中链接的点击次数。我希望能够在我的标签中添加交替颜色的链接;我可以为不同的链接范围手动设置不同的颜色,只要库为我处理用户触摸的链接检测。似乎TTTAttributedLabel
类最后应用链接样式,因此特定范围的文本样式将被为类实例设置的单个链接样式覆盖。
准备潜入并尝试修改TTTAttributedLabel
代码(要么不应用链接样式,要么之后应用我自己的样式范围),我想我会在这里询问是否有人有更好的想法考虑实现这一目标。不同的库可能会在同一标签中支持各种颜色的链接范围,开箱即用吗?
答案 0 :(得分: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)
};