2013-05-15 1 views
2

Я использую TTTAttributedLabel для обнаружения кликов по ссылкам в стиле UILabel (с использованием NSAttributedString) в проекте iOS 6. Я хотел бы иметь чередующиеся цвета для ссылок на моем лейбле; Я в порядке с ручной настройкой разных цветов для разных диапазонов ссылок, если библиотека обрабатывает обнаружение ссылок с пользователями для меня. Кажется, что класс TTTAttributedLabel применяет последнее стилирование ссылок, так что стиль текста для определенных диапазонов перезаписывается стилем одной ссылки, установленным для экземпляра класса.Раскраски с несколькими различными цветами в одном и том же NSAttributedString

Быть готовым погрузиться и попытаться изменить код TTTAttributedLabel (чтобы не применять стиль ссылок или применять мои собственные диапазоны стилей впоследствии), я подумал, что я бы спросил, есть ли у кого-то лучшие идеи для рассмотрения это. Может ли другая библиотека поддерживать разноцветные линии ссылок на одной и той же этикетке, из коробки?

ответ

5

Это уже поддерживается, просто использовать:

- (void)addLinkWithTextCheckingResult:(NSTextCheckingResult *)result 
          attributes:(NSDictionary *)attributes; 

Это позволяет определять собственные атрибуты на основе каждого звена. Например, с linkAttributes словарем для единовременнога окраски ссылки:

if (linkAttributes) { 
    [self addLinkWithTextCheckingResult:[NSTextCheckingResult linkCheckingResultWithRange:linkRange URL:[NSURL URLWithString:linkText]] attributes:linkAttributes]; 
} 
else { 
    [self addLinkToURL:[NSURL URLWithString:linkText] withRange:linkRange]; 
} 

Ссылки атрибутов словарь использует ключи, определенные в NSAttributedString.h. Например:

linkAttributes = @{ 
    NSForegroundColorAttributeName: [UIColor greenColor], 
    NSUnderlineStyleAttributeName: @(NSUnderlineStyleNone) 
}; 
+0

Что входит в словарь 'linkAttributes'? Где документация для этого? –

+0

Посмотрите в 'NSAttributedString.h'. Я добавлю пример выше. – mjh

Смежные вопросы