4

kCTUnderlineStyleAttributeName 的文档传达了以下内容:

kCTUnderlineStyleAttributeName 要在渲染时应用的下划线样式,适用于应用此属性的文本。值必须是 CFNumber 对象。默认为 kCTUnderlineStyleNone。设置除 kCTUnderlineStyleNone 以外的值来绘制下划线。此外,CTUnderlineStyleModifiers 中列出的常量可用于修改下划线的外观。下划线颜色由文本的前景色决定。

setAttributes 函数的签名如下:

func setAttributes(attrs: [NSObject : AnyObject]?, range: NSRange)

我遇到的问题是文档似乎暗示CTUnderlineStyle.Single可以(并且应该在 Swift 中)用作kCTUnderlineStyleAttributeName键的值。但是,前者是一个结构体,因此不符合字典值类型所要求的 AnyObject 协议。

有任何想法吗?

4

2 回答 2

6

我花了很多时间在这上面。

价值需要面对AnyObject协议。

而不是像这样CTUnderlineStyle.Single使用NSNumber

NSNumber(int: CTUnderlineStyle.Single.rawValue)

例子:

attributedString.addAttribute(kCTUnderlineStyleAttributeName, value:NSNumber(int: CTUnderlineStyle.Single.rawValue), range:NSRange(location:0,length:attributedString.length));
于 2014-10-31T12:54:28.390 回答
0

swift 3中为我工作了这段代码

let attributes:[AnyHashable : Any] = [kCTUnderlineStyleAttributeName as AnyHashable:NSNumber(value:CTUnderlineStyle.single.rawValue)]
于 2016-10-17T11:02:16.383 回答