2014-09-08 2 views
4

Документация kCTUnderlineStyleAttributeName реле следующие:Установка kCTUnderlineStyleAttributeName для NSMutableAttributedString в Swift

kCTUnderlineStyleAttributeName стиль подчеркивания, которые должны применяться во время рендеринга для текста, к которому относится этот атрибут. Значение должно быть объектом CFNumber. По умолчанию используется kCTUnderlineStyleNone. Задайте значение, отличное от kCTUnderlineStyleNone, чтобы нарисовать подчеркивание. Кроме того, константы, перечисленные в CTUnderlineStyleModifiers, могут использоваться для изменения внешнего вида подчеркивания. Цвет подчеркивания определяется цветом переднего плана текста.

Сигнатура функции SetAttributes выглядит следующим образом:

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

Вопрос, который я имею, что документация, кажется, намекают на то, что CTUnderlineStyle.Single может (и должен , в Swift) используется как значение для ключа kCTUnderlineStyleAttributeName. Однако первая является структурой и, как результат, не соответствует протоколу AnyObject, требуемому типом значения словарей.

Любые идеи?

ответ

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)); 
+0

Brilliant. Спасибо Vojtech очень ценю, что вы нашли время, чтобы решить эту проблему. –

0

в скор 3 работал для меня этот код

let attributes:[AnyHashable : Any] = [kCTUnderlineStyleAttributeName as AnyHashable:NSNumber(value:CTUnderlineStyle.single.rawValue)] 
Смежные вопросы