У меня есть текстовая метка внутри UITableViewCell
, состоящая из двух слов.Два текстовых цвета в одном текстовом ярлыке UITableViewCell
Как изменить цвет слов; делая первое слово зеленым, а второе слово красным?
У меня есть текстовая метка внутри UITableViewCell
, состоящая из двух слов.Два текстовых цвета в одном текстовом ярлыке UITableViewCell
Как изменить цвет слов; делая первое слово зеленым, а второе слово красным?
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).
This question адреса, получающие часть строки, которую вам нужно будет сделать. Вместо того, чтобы изменять текст с помощью BOLD, вы можете использовать this question, чтобы получить представление о том, как изменить цвет.
С помощью строки NSAttributedString вы можете установить два разных цвета. NSAttributedString
Самый простой способ сделать это будет с nsattributedstring в 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 Документация:
oh sweet Спасибо за редактирование: D я просто смотрел, как это сделать, чтобы не кластеризовать ответ, я смог щелкнуть править и посмотреть, что вы сделали для форматирования, очень обязан –
Исправьте меня, если я ошибаюсь, но 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
Это правильно, в то время, когда я написал ответ, я думаю, я не обращал внимания –
kCTStrokeColorAttributeName <- выглядеть настройки для переписчиков ... AddAttribute ... принимает значение строки и перечислениями являются номера –
@ A'saDickens вы были правы. Просто изменилось. – cescofry