【问题标题】:iOS - UITableViewCell make text boldiOS - UITableViewCell 使文本加粗
【发布时间】:2013-12-31 07:15:33
【问题描述】:

我有一个字符串:

NSString *userInfo = @"James Johnson @james";

我要做的是加粗James Johnson 并保持@james 正常字体。

所以我尝试使用NSAttributedString,但为了完成该过程,我在某处做错了事。

这是我尝试过的:

NSString *user = @"James Johnson @james";

UIFont *fontLight = [UIFont fontWithName:@"HelveticaNeue-Light" size:14];
UIFont *fontBold = [UIFont fontWithName:@"HelveticaNeue-Bold" size:14];

NSMutableAttributedString *string = [[NSMutableAttributedString alloc]initWithString:userInfo];

//TESTING WITH RANDOM PARTS OF THE STRIN
[string addAttribute:NSForegroundColorAttributeName value:fontLight range:NSMakeRange(0, 3)];
[string addAttribute:NSForegroundColorAttributeName value:fontBold range:NSMakeRange(3, 5)]; 

NSString *str = [string string];

cell.textLabel.text = str;

即使我走错了方向,有没有办法让这项工作顺利进行?

什么不工作

由于某种原因,0 - 3 范围内的字符不是浅字体...而是整个cell.textLabel.text 以某种方式加粗,并且不是我在 UIFont 中指定的字体大小 14。

【问题讨论】:

  • 那么问题出在哪里?
  • @Virussmca 更新了问题
  • 您必须将attributedText 设置为单元格标签。

标签: ios xcode uitableview xcode5


【解决方案1】:

你的最后一部分是错误的。您必须创建您的NSAttributedString,最后使用

NSString *str = [string string];

由于NSString 对格式一无所知,您必须使用NSAttributedString 将其分配给单元格的textLabel:

cell.textLabel.attributedText = string;

【讨论】:

  • 我试过了,但出错了:[UICTFont set]: unrecognized selector sent to instance. 我认为这与代码的addAttribute - values 部分有关...
  • 这是因为你设置了颜色而不是字体。所以请将NSForegroundColorAttributeName替换为NSFontAttributeName。
  • 非常感谢@FlorianMielke。也在做同样的事情。节省了一天。
【解决方案2】:

您应该将attributedString 设置为attributed 文本

评论这些行

//NSString *str = [string string];
//cell.textLabel.text = str;

然后写这个

cell.textLabel.attributedText = string;//Set NSMutableAttributedString only not NSString

【讨论】:

  • 我试过这个但我得到了这个错误:[UICTFont set]: unrecognized selector sent to instance。我认为这与代码的addAttribute - values 部分有关......
【解决方案3】:

UILabel 有一个属性属性文本。您应该使用属性字符串分配此属性,而不是使用 text 属性。

【讨论】:

    【解决方案4】:

    在您的代码中进行如下更改:

    1. 您将需要报告 NSMutableAttributedString 中的所有字符,因此请在范围内指定它们,同时添加属性。
    2. 请提供正确的属性名称,否则会出现异常,在这种情况下,您应该使用“NSFontAttribteName”代替“NSForegroundColorAttributeName”。
    NSString *user = @"James Johnson @james";
    
    UIFont *fontLight = [UIFont fontWithName:@"HelveticaNeue-Light" size:14];
    UIFont *fontBold = [UIFont fontWithName:@"HelveticaNeue-Bold" size:14];
    
    NSMutableAttributedString *string = [[NSMutableAttributedString alloc]initWithString:user];
    
    [string addAttribute:NSFontAttributeName value:fontLight range:NSMakeRange(0, 20)];
    
    [string addAttribute:NSFontAttributeName value:fontBold range:NSMakeRange(0, 5)];
    
    
    cell.textLabel.attributedText = string;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-15
      • 2020-04-27
      • 2016-06-07
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 2011-06-03
      相关资源
      最近更新 更多