2016-01-07 1 views
0

У меня есть метод, который я хочу использовать для изменения цвета последних 6 символов текста UILabel, который будет иметь дату в скобках, то есть (1999). Сначала я установил текст tableViewCell, а затем получил свойство attributedText, чтобы получить шрифт и размер текста UILabel. Я не уверен, что я делаю неправильно, но сейчас вся строка желтая, а не только последние 6 символов текста ярлыка. Любые идеи почему?NSMutableAttributedString не может правильно установить атрибуты или addAttributes

tableViewCell.titleLabel.text = speech.title; 

NSAttributedString *titleAttributedString = tableViewCell.titleLabel.attributedText; 
tableViewCell.titleLabel.attributedText = [speech titleAttributedString:titleAttributedString size:tableCell.titleLabel.font.pointSize]; 

// Speech class instance method 
- (NSAttributedString *)titleAttributedString:(NSAttributedString *)attributedString size:(CGFloat)size { 
    NSRange range = NSMakeRange(attributedString.length - 6, 6); 
    NSMutableAttributedString *titleString = [attributedString mutableCopy]; 

    NSDictionary *titleAttributesDictionary = [attributedString attributesAtIndex:0 effectiveRange:&range]; 
    NSDictionary *dateAttributesDictionary = @{ 
               NSFontAttributeName : titleAttributesDictionary[NSFontAttributeName], 
               NSForegroundColorAttributeName : [UIColor yellowColor] 
               }; 

    // Neither of these lines solves the problem 
    // Both titleStrings are yellow 
    [titleString setAttributes:dateAttributesDictionary range:range]; 
    [titleString addAttributes:dateAttributesDictionary range:range]; 
    [titleString setAttributes:dateAttributesDictionary range:range]; 

    return titleString; 
} 

ответ

1

Вы переписав вычисленный range значение в attributesAtIndex:effectiveRange: вызова. Этот вызов запрашивает атрибуты с индексом 0 и эффективный диапазон, по которому применяются эти атрибуты, который является вашей цельной строкой. Просто передайте NULL для аргумента effectiveRange:, согласно документам, когда вас не интересует значение (вы сразу после шрифта с индексом 0).

HTH

+0

Все было! Благодаря!!! –

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