kCTUnderlineStyleAttributeName的文档会转发以下内容:
kCTUnderlineStyleAttributeName 对于此属性适用的文本,在渲染时应用的下划线样式。值必须是CFNumber对象。默认值为kCTUnderlineStyleNone。设置除kCTUnderlineStyleNone之外的值的值以绘制下划线。此外,CTUnderlineStyleModifiers中列出的常量可用于修改下划线的外观。下划线颜色由文本的前景色决定。
setAttributes函数的签名如下:
func setAttributes(attrs: [NSObject : AnyObject]?, range: NSRange)
我遇到的问题是文档似乎暗示 CTUnderlineStyle.Single 可以(并且应该在Swift中)用作 kCTUnderlineStyleAttributeName 键。但是,前者是一个结构体,因此不符合字典值类型所需的AnyObject协议。
有什么想法吗?
答案 0 :(得分: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));
答案 1 :(得分:0)
为我工作了这段代码
let attributes:[AnyHashable : Any] = [kCTUnderlineStyleAttributeName as AnyHashable:NSNumber(value:CTUnderlineStyle.single.rawValue)]