我想在下面创建sl.asl粗体,并根据它在下面的数值为它着色。有什么想法吗?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateStyle:NSDateFormatterShortStyle];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
// Configure the cell...
ServiceLevel *sl = (ServiceLevel *)[self.importedRows objectAtIndex:indexPath.row];
cell.textLabel.text = [NSString stringWithFormat:@"%@ - %@", sl.name , sl.asl];
return cell;
}
答案 0 :(得分:1)
创建NSAttributedString
并将其分配给cell.textLabel.attributedText
。例如:
NSDictionary *attributes = @{
NSForegroundColorAttributeName:[UIColor redColor],
NSFontAttributeName:[UIFont fontWithName:@"Helvetica-Bold" size:16]
};
NSString *delimiter = @" - ";
NSString *text = [NSString stringWithFormat:@"%@%@%@", sl.name, delimiter, sl.asl];
NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:text];
[attributedText addAttributes:attributes range:NSMakeRange(sl.name.length + delimiter.length, sl.asl.length)];
cell.textLabel.attributedText = attributedText;
答案 1 :(得分:1)
更新代码 - 用于粗体化部分文本并根据数值更改颜色
在您发布有关stackoverflow的问题之前,请先进行一些初步研究,并向我们展示您过去尝试过的内容,以便我们相应地为您提供帮助。
您可以使用NSAttributedString将文本的一部分设置为粗体:
//要加粗字符串的一部分,您必须让它知道您希望粗体开始和结束的位置,因为您需要知道sl.asl
变量的长度
NSMutableAttributedString * attributedAsl = [[NSMutableAttributedString alloc] initWithAttributedString:sl.asl];
NSString *delimiter = @" - "; //This is what will be written to separate sl.name and sl.asl
NSString *begginingString = [NSString stringWithFormat:@"%@%@", delimiter, sl.name];
//What we dont want bolded
NSInteger startBoldFromEndOfBeginningString = [begginingString length];
//The length of text we want bolded - your sl.asl variable
NSInteger slAslLength = ((NSString)sl.asl).length;
UIFont *font= [UIFont fontWithName:@"Helvetica-Bold" size:25.0f];
[attributedAsl addAttribute:NSFontAttributeName value:font range:NSMakeRange(startBoldFromEndOfBeginningString, slAslLength)];
cell.textLabel.attributedText = attributedAsl;
然后你可以像这样设置文字颜色
cell.textLabel.textColor = [UIColor redColor];
现在,如果你想根据某些东西的数值更改textColor,那么你必须开始使用构成颜色值的RGB值。
[UIColor colorWithRed:1.0 green:0.0 blue:1.0 alpha:1.0];
确保将颜色均匀分布到所需颜色范围将有助于了解最高数量。
假设您在tableView中显示英语字母表,单元格总数将为26,并且您想要更改显示的每个单元格的文本颜色,一种解决方案是:< / p>
CGFloat maxNumber = 26; //total number of letters
CGFloat dynamicColor = 1.0/maxNumber * indexPath.row;
[UIColor colorWithRed:dynamicColor green:0.0 blue:1.0 alpha:1.0];
这将确保每个textColor对于显示的每个单元格都不同。
答案 2 :(得分:1)
NSAttributedString应该做的伎俩。
像:
NSString *name = @"SampleName";
NSUInteger asl = 2;
NSString *t_string = [NSString stringWithFormat:@"%@ - %d", name , asl];
NSUInteger t_nameLength = name.length;
NSUInteger t_aslLength = 1;
UIColor *t_color = nil;
switch (asl) {
case 1:
t_color = [UIColor redColor];
break;
case 2:
t_color = [UIColor greenColor];
break;
default:
t_color = [UIColor blackColor];
break;
}
NSMutableAttributedString *t_attributedString = [[NSMutableAttributedString alloc] initWithString:t_string];
[t_attributedString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Arial" size:14.0] range:NSMakeRange(0, t_nameLength)];
[t_attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0, t_nameLength)];
[t_attributedString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Arial-BoldMT" size:14.0] range:NSMakeRange(t_nameLength + 3, t_aslLength)];
[t_attributedString addAttribute:NSForegroundColorAttributeName value:t_color range:NSMakeRange(t_nameLength + 3, t_aslLength)];
cell.textLabel.attributedText = t_attributedString;