2013-07-16 2 views

ответ

10
NSString *twoWords = @"Green Red"; 
    NSArray *components = [twoWords componentsSeparatedByString:@" "]; 
    NSRange greenRange = [twoWords rangeOfString:[components objectAtIndex:0]]; 
    NSRange redRange = [twoWords rangeOfString:[components objectAtIndex:1]]; 

    NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:twoWords]; 

    [attrString beginEditing]; 
    [attrString addAttribute: NSForegroundColorAttributeName 
         value:[UIColor greenColor] 
         range:greenRange]; 

    [attrString addAttribute: NSForegroundColorAttributeName 
         value:[UIColor redColor] 
         range:greenRange]; 

    [attrString endEditing]; 

Затем вы можете использовать attrString непосредственно на UILabel (> IOS 6, проверьте Apple Documentation).

+0

kCTStrokeColorAttributeName <- выглядеть настройки для переписчиков ... AddAttribute ... принимает значение строки и перечислениями являются номера –

+0

@ A'saDickens вы были правы. Просто изменилось. – cescofry

0

This question адреса, получающие часть строки, которую вам нужно будет сделать. Вместо того, чтобы изменять текст с помощью BOLD, вы можете использовать this question, чтобы получить представление о том, как изменить цвет.

7

Самый простой способ сделать это будет с в iOS 6.0 или новее. Вы выделили бы один из них и в titleLabel (или любой другой объект, который содержит текст) UITableViewCell. Если вы с помощью titleLabel вы могли бы сделать это:

[cell.titleLabel setAttributedText:yourAttributedString]; 

Для установки цвета со NSAttributedString, сделайте следующее:

NSMutableAttributedString* attributedString = [[NSMutableAttributedString alloc] initWithString:stringToManipulate]; 
[attributedString beginEditing]; 
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(0, widthOfFisrtWord)]; 
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(widthOfFisrtWord, widthOfSecondWord)]; 
[attributedString endEditing]; 

Обратите внимание, что диапазоны, предусмотренные выше, с использованием NSMakeRange не будет являться которые вам нужны. Вам придется изменить диапазон, чтобы он соответствовал вашим потребностям, в зависимости от того, есть ли у двух слов пробел между ними или другими персонажами.

компании Apple Документация:

+0

oh sweet Спасибо за редактирование: D я просто смотрел, как это сделать, чтобы не кластеризовать ответ, я смог щелкнуть править и посмотреть, что вы сделали для форматирования, очень обязан –

+0

Исправьте меня, если я ошибаюсь, но NSAttributedString НЕ является способом сделать это. Связанная с вами документация не имеет способа указывать диапазоны для атрибутов. Однако ваш код использует NSMutableAttributedString, документация для которого имеет диапазоны: https://developer.apple.com/library/mac/documentation/cocoa/reference/foundation/classes/NSMutableAttributedString_Class/Reference/Reference.html#//apple_ref/occ/instm/NSMutableAttributedString/addAttribute: value: range: – prewett

+0

Это правильно, в то время, когда я написал ответ, я думаю, я не обращал внимания –