我正在尝试为使用CoreText处理和绘制的文本添加超链接。根据苹果关于CoreText的文档,我应该使用addAttribute:NSLinkAttributeName。然而,在iOS(4.3)上它说不认识NSLinkAttributeName。在我的文档搜索中,似乎NSLinkAttributeName仅存在于Mac上。它在iOS上可用吗?如果不可用,如何使用NSMutableAttributedString和CoreText创建文本部分的超链接?谢谢。
从iOS 7开始,UITextView
支持带链接的属性字符串:
textView.attributedText = [[NSAttributedString alloc] initWithString:@"Stack Overflow" attributes:@{NSLinkAttributeName: @"http://stackoverflow.com"}];
默认情况下,链接呈现为蓝色文本。您可以使用UITextView
的linkTextAttributes
属性更改样式。
如果您在UITextView
上将editable
设置为NO
,链接将变为可点击状态。
Jeremy发布了JTextView
,这是一款基于Core Text的UITextView
替代品,支持包含链接在内的属性文本。
简而言之,JTextView:
-drawRect:
中,它使用数据检测器查找链接。如果找到链接,则设置其对应范围的自定义属性。使用UITextView,它会解析您的文本并将链接转换为蓝色下划线超链接:
textView.dataDetectorTypes = UIDataDetectorTypeLink;
我知道这是一个老问题,但是...
尝试使用NSMutableAttributedString。它有两个用于属性的方法:
void addAttribute:(NSString *)value range:(NSRange)
并且
void addAttributes:(NSDictionary *) range:(NSRange)
是的,它不存在。如果你将搜索范围缩小到iOS库,则不会返回NSLinkAttributeName
的任何结果。它没有出现在这里... 官方上可能是私有的?
这篇好文章提到了超链接,但没有展示示例。我怀疑使用公共API方法是否可能。
NSLink
,遵循几乎所有其他属性名称常量的模式)。就功能而言,如果我没记错的话,此属性在 CoreText 中并没有提供任何东西。 - danyowdee