在UIBarButtonItem标题中为字符串使用多个样式

时间:2015-09-07 09:44:39

标签: ios uibarbuttonitem nsmutableattributedstring

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

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

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

2 个答案:

答案 0 :(得分:3)

您可以使用自定义视图初始化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];

答案 1 :(得分:1)

你可以使用

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