I have a method below that I want to use to change the color of the last 6 characters of a UILabel
's text, which will be a date in parenthesis, ie (1999)
. First I set the text of a tableViewCell
and then I get the attributedText
property so I can get the font and size of the UILabel
text. I'm not sure what I'm doing wrong, but right now the whole string is yellow, not just the last 6 characters of the label's text. Any ideas why?
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;
}
You are overwriting your calculated range
value in the attributesAtIndex:effectiveRange:
call. That call asks for the attributes at index 0 and the effective range over which those attributes apply, which is your whole string. Just pass NULL
for the effectiveRange:
argument, as per the docs when you are not interested in the value (you're just after the font at index 0).
HTH
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.