1

如何更改 UITableViewCell 的 detailTextLabel 中一个字符串的字体?

NSString *detailStr = [NSString stringWithFormat:@"%@ %@",post.score,post.domain];

cell.detailTextLabel.text = detailStr;

我基本上希望post.score字符串是一种颜色,而post.domain字符串是另一种颜色。

4

3 回答 3

2

答案:NSAttributedString

尝试这个 :

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;

注意:未经测试,但编写代码来帮助您。

于 2013-05-09T14:28:04.177 回答
1

如果您乐于使用 iOS6+ API,请查看NSAttributedString并使用cell.detailTextLabel.attributedText = ...

于 2013-05-09T14:28:02.170 回答
1

我认为您正在寻找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];
于 2013-05-09T14:31:36.587 回答