我有一个字符串:
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。
答案 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)
按如下方式对代码进行更改:
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;