iOS - UITableViewCell使文本变为粗体

时间:2013-12-31 07:15:34

标签: ios xcode uitableview xcode5

我有一个字符串:

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。

4 个答案:

答案 0 :(得分:6)

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

删除格式
NSString *str = [string string];

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

cell.textLabel.attributedText = string;

答案 1 :(得分:3)

您应该将attributedString设置为attributed文字

评论这些行

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

写下这个

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

按如下方式对代码进行更改:

  1. 您需要在NSMutableAttributedString中报告所有字符,因此请在范围内指定它们,同时添加属性。
  2. 提供正确的属性名称,否则您将遇到异常,在这种情况下,您应该使用“NSFontAttribteName”代替“NSForegroundColorAttributeName”。
  3. 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;