如何在 iOS 中为 TTTAttributedLabel LinkAttributes 添加 NSDictionary UIColor

How to add NSDictionary UIColor in iOS for TTTAttributedLabel LinkAttributes

我已经为 https://github.com/TTTAttributedLabel/TTTAttributedLabel

使用 Xamarin 绑定

并且根据 - Make link in UILabel.attributedText *not* blue and *not* underlined

self.label.linkAttributes = @{NSForegroundColorAttributeName: color, 
                               NSUnderlineStyleAttributeName: @(NSUnderlineStyleNone)};

我想设置我的 link 属性,我只是不确定语法 -

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/AttributedStrings/Articles/standardAttributes.html

我试过这些变体 -

 label.LinkAttributes = new NSDictionary(
            new NSString("NSForegroundColorAttributeName"), UIColor.Red,
            new NSString("NSUnderlineStyleAttributeName"), new NSUnderlineStyle() == NSUnderlineStyle.Double);

 label.LinkAttributes = new NSDictionary(
            new NSString("NSForegroundColorAttributeName"), UIColor.Red,
            new NSString("NSUnderlineStyleAttributeName"), new NSNumber(2));

但是没有用。不确定如何传入 UIColor,因为看不到它的可用类型,它正在做 "something" 因为它用这段代码擦掉了我的下划线 + 蓝色。

以下代码行取自您链接的项目的 github README.md

(id)kCTForegroundColorAttributeName : (id)[UIColor redColor].CGColor,

看起来图书馆处理的是 CGColor 不是 UIColor(或 NSColor,它们只是 OSX) .有(太多)多种方式来表示颜色,遗憾的是,大多数 API 只适用于一种。在这种情况下,您需要使用:

UIColor.Red.CGColor

而不是:

UIColor.Red

在你给你标签的 LinkAttributes 属性 的字典里。

kCTForegroundColorAttributeName(来自您的评论)还必须与 Apple 的常量值匹配,该值可以不同于常量的名称。在 Xamarin.iOS 中,此常量公开为:

CoreText.CTStringAttributeKey.ForegroundColor

所以如果库(重新)使用 CoreText 常量,那么这就是要使用的值。