我试图让UITextView在文本中有两个链接,但颜色不同。我不确定它是否可能。
我已将UITextView设置为检测链接,不可编辑,但只能选择。
到目前为止我所做的是以下内容:
NSMutableAttributedString *termsAndConditionsTitle = [[NSMutableAttributedString alloc] initWithString:@"I have read the " attributes:@{NSLinkAttributeName: @"https://apple.com", NSForegroundColorAttributeName: [UIColor greenColor]}];
NSMutableAttributedString *someString2 = [[NSMutableAttributedString alloc] initWithString:@"terms and conditions" attributes:@{NSLinkAttributeName: @"https://microsoft.com", NSForegroundColorAttributeName: [UIColor redColor]}];
[termsAndConditionsTitle appendAttributedString:someString2];
[self.termsAndConditionsView setAttributedText:termsAndConditionsTitle];
但最后链接只有UITextView的色调。是否有可能使两个链接有不同的颜色?提前谢谢!
P.S。如果可能,我不想使用库/框架。
答案 0 :(得分:0)
您需要指定文本视图的linkTextAttributes
- 基本上您只需告诉您的文字视图以识别链接并对其进行样式化,但是您指定:
textView.linkTextAttributes = @{
NSForegroundColorAttributeName:[UIColor someColor],
NSUnderlineStyleAttributeName:@(NSUnderlineStyleSingle)
};
您还应该能够分配tintColor
(因为UITextView
继承与UIView
相同的行为,并将此颜色用于链接)。 但如果在您的情况下由于某种原因无效,则分配链接属性将是解决方案。
如果您的目的是为每个链接提供两种不同的颜色,那么您必须根据字符串中每个链接的范围手动分配每个链接的属性。
答案 1 :(得分:0)
是的,问题可能是TextView具有链接的一些预定义属性。
要修复此问题,只需删除它们即可。
yourTextView.linkTextAttributes = [:]
就像这样,一旦textview检测到任何链接,它将不会对其应用任何特殊属性。
完成此操作后,它可以正常工作,但不会更改链接的颜色,添加属性时必须手动进行操作。