如何更改 UITableViewCell 的 detailTextLabel 中一个字符串的字体?
NSString *detailStr = [NSString stringWithFormat:@"%@ %@",post.score,post.domain];
cell.detailTextLabel.text = detailStr;
我基本上希望post.score
字符串是一种颜色,而post.domain
字符串是另一种颜色。
如何更改 UITableViewCell 的 detailTextLabel 中一个字符串的字体?
NSString *detailStr = [NSString stringWithFormat:@"%@ %@",post.score,post.domain];
cell.detailTextLabel.text = detailStr;
我基本上希望post.score
字符串是一种颜色,而post.domain
字符串是另一种颜色。
尝试这个 :
int count1 = [post.score length];
int count2 = [post.domain length];
NSMutableAttributedString *textLabelStr = [[NSMutableAttributedString alloc] initWithString:@"%@ %@",post.score,post.domain];
[textLabelStr setAttributes:@{NSForegroundColorAttributeName : [UIColor redColor], NSFontAttributeName : [UIFont systemFontOfSize:17]} range:NSMakeRange(0, count1)];
[textLabelStr setAttributes:@{NSForegroundColorAttributeName : [UIColor blueColor], NSFontAttributeName : [UIFont systemFontOfSize:17]} range:NSMakeRange(count1 + 1, count2)];
cell.detailTextLabel.attributedText = textLabelStr;
注意:未经测试,但编写代码来帮助您。
如果您乐于使用 iOS6+ API,请查看NSAttributedString
并使用cell.detailTextLabel.attributedText = ...
我认为您正在寻找setAttributedText:
. UILabel
您可以将 an 传递NSAttributedString
给它,以便以不同的方式对字符串的不同部分进行样式化。
我在下面写了一个示例,应该可以满足您的要求。
NSAttributedString *scoreAttributedString = [[NSAttributedString alloc] initWithString:[post score] attributes:@{NSForegroundColorAttributeName: [UIColor redColor]}];
NSAttributedString *domainAttributedString = [[NSAttributedString alloc] initWithString:[post domain] attributes:@{NSForegroundColorAttributeName: [UIColor greenColor]}];
NSMutableAttributedString *detailMutableAttributedString = [[NSMutableAttributedString alloc] init];
[detailMutableAttributedString appendAttributedString:scoreAttributedString];
[detailMutableAttributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@" "]];
[detailMutableAttributedString appendAttributedString:domainAttributedString];
[[cell detailTextLabel] setAttributedText:detailMutableAttributedString];