IOS - использование TTTAttributedLabel для установки двух цветовых текстов

Я создаю приложение iOS с меткой. Я хочу установить два цвета. Один для первой части и другого цвета для оставшейся части. Я видел сообщения в Stack over flow, TTTAttributedLabel имеет возможность устанавливать более одного цвета текста. Мой текст будет похож на "ABC > def". Для "ABC", я хочу установить коричневый цвет и "def", я хочу установить белый цвет. Как я могу установить это?

2 ответа

NSString* text = @"ABC > def";
attributedLabel = [[[TTTAttributedLabel alloc] initWithFrame:frame] autorelease];
attributedLabel.numberOfLines = 0;
attributedLabel.lineBreakMode = UILineBreakModeWordWrap;
attributedLabel.fontColor = [UIColor brownColor];
[attributedLabel setText:text afterInheritingLabelAttributesAndConfiguringWithBlock:^(NSMutableAttributedString *mutableAttributedString) {
 NSRange whiteRange = [text rangeOfString:@"def"];
 if (whiteRange.location != NSNotFound) {
 // Core Text APIs use C functions without a direct bridge to UIFont. See Apple "Core Text Programming Guide" to learn how to configure string attributes.
 [mutableAttributedString addAttribute:(NSString *)kCTForegroundColorAttributeName value:(id)[UIColor whiteColor].CGColor range:whiteRange];
 }
 return mutableAttributedString;
}];
[attributedLabel sizeToFit]; //this may not be needed if the frame provided is large enough

Это ищет "def" в вашей строке и устанавливает цвет переднего плана текста в белый для этого диапазона. Надеюсь это поможет. Я только что узнал об этом вчера. Пошел на ваш вопрос, пытаясь понять это для себя.


Вы можете использовать TTTRegexAttributedLabel, доступную по адресу: https://github.com/kwent/TTTRegexAttributedLabel. (TTTAttributedLabel, но более простой в использовании с регулярными выражениями)

//SET FONT ONLY ON FIRST MATCH REGEX
 TTTRegexAttributedLabel *label = [[TTTRegexAttributedLabel alloc] init];
 label.textColor = [UIColor whiteColor];
 NSString *s = @"ABC > def";
 [self.label setText:s withFirstMatchRegex:@"^[a-zA-Z ]*>"
 withFont:[UIFont systemFontOfSize:12]
 withColor:[UIColor brownColor]];

licensed under cc by-sa 3.0 with attribution.