设置NSLinkAttributeName字体颜色

时间:2014-08-22 23:57:37

标签: ios nsmutableattributedstring

我觉得我错过了一些简单的事情,但我似乎无法知道如何做到这一点:

我将属性设置为如此链接:

[myAttrString addAttribute:NSLinkAttributeName value:linkURL range:selectedRange];

虽然有效,但链接是蓝色的,我似乎无法改变颜色。这会将除链接之外的所有内容设置为白色:

[myAttrString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:selectedRange];

是否有其他颜色属性名称,我似乎无法找到特定于链接的?

8 个答案:

答案 0 :(得分:63)

  1. 使用UITextView
  2. 设置UITextView的{​​{1}},如下所示:

    linkTextAttributes

答案 1 :(得分:3)

我实际上最终使用TTTAttributedLabel作为我的标签,然后能够完成以下工作:

NSDictionary *linkAttributes = @{(id)kCTForegroundColorAttributeName: [UIColor whiteColor],
                                 (id)kCTUnderlineStyleAttributeName: [NSNumber numberWithInt:kCTUnderlineStyleSingle]
                                 };
self.lblDescription.linkAttributes = linkAttributes;    

答案 2 :(得分:3)

txtLabel.linkAttributes = @{};

这是正确的,在设置任何其他属性之前调用此行

答案 3 :(得分:2)

对于swift(供其他人参考):

public static DataTable datatable2 = new DataTable();

public void createDatatable()
{
    profile p = new profile();
    DataTable datatable1 = p.getResults(System.Convert.ToInt32(HttpContext.Current.Session["ID"]));

    foreach (DataRow dr in datatable1.Rows)
    {
        datatable2 = datatable1.Copy();
    }
}

答案 4 :(得分:1)

这对我有用:

txtLabel.linkAttributes = @{};

NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:expression];

{
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:result.range];

[string addAttribute:NSLinkAttributeName value:@"link" range:result.range];
}

答案 5 :(得分:1)

  

<强>解释

这非常简单,支持链接检测的文本组件具有名为linkTextAttributes的属性。

此属性存储链接的样式,因为组件在检测到新链接时可以应用它。

总结一下,您的样式将被应用,然后样式存储在此属性中(按此顺序),成功覆盖您想要的样式。

  

<强>解决方案:

将此属性设置为空(linkTextAttributes = [:])并完全控制链接样式。

  

提示:这可用于在UITextView上创建可触摸元素,其行为类似于按钮。创造一个非常好的效果

答案 6 :(得分:1)

Swift 3

var aURL = "Http:// Your URL"
var description = "Click Me:"
let attributedString = NSMutableAttributedString(string: description + aURL)

/// Deal with link color
let foundURLRange = attributedString.mutableString.range(of: aURL)
attributedString.addAttribute(NSLinkAttributeName, value: aURL, range: foundURLRange)
textview.linkTextAttributes = [NSForegroundColorAttributeName: UIColor.yellow]

/// Deal with description color
let foundDescriptionRange = attributedString.mutableString.range(of: description)
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.red, range: foundDescriptionRange)

textview.attributedText = attributedString

enter image description here

答案 7 :(得分:-1)

如果你使用TTTAttributedLabel,Oren的答案是有效的。但是你需要注意注释中linkAttributes的警告。

  

/ **
  包含默认NSAttributedString的字典   要应用于检测到或手动添加到的链接的属性   标签文字。默认链接样式为蓝色并带下划线。

     

@warning您必须在设置自动编码之前指定linkAttributes或   手动添加要应用的这些属性的链接   * /

     

@property(nonatomic,strong)NSDictionary * linkAttributes;