在 UIBarButtonItem 标题中对字符串使用多种样式

Using multiple styles for string in UIBarButtonItem title

如果要使用属性字符串来格式化字符串,使第一个单词具有不同于第二个单词的样式(例如字体)。因此我认为我可以使用 NSMutableAttributedString。现在我有一个UIBarButtonItem,但是这里只能设置标题和标题的文本属性。

我看到了一个implementation,其中一个NSDictionary用来拥有多个属性。这样做的缺点是您只能对整个字符串进行格式化。我需要它作为字符串的一部分。

是否可以在 UIBarButtonItem 中为同一标题字符串设置多种样式?

你可以像这样使用

NSMutableAttributedString *;label_text = 
[[NSMutableAttributedString alloc]initWithAttributedString: yourlabelel.attributedText];
[label_text addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,1)];
[label_text addAttribute:NSForegroundColorAttributeName value: [UIColor greenColor] range:NSMakeRange(1,2)];
[label_text addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(2,3)];

[yourlabelel setAttributedText: label_text];

终于将此标签添加到您的 UIBarButtonItem

选择-2

看到这个link

您可以使用自定义视图初始化 UIBarButtonItem。准备您的属性字符串,创建一个 UILabel,将其 attributedText 设置为准备好的字符串,然后使用标签初始化按钮。

像这样:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 24)];

NSAttributedString *strt = [[NSAttributedString alloc] initWithString:@"text"
    attributes:@{
                 NSForegroundColorAttributeName : [UIColor redColor]
                 }];
label.attributedText = strt;

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:label];