在iOS 5中的UILabel上的多色

时间:2013-07-26 14:02:52

标签: iphone ios objective-c ios5 uilabel

我有一个UILabel,我需要在其中显示两个不同颜色的字符串: 以下是我的代码:

NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithAttributedString: lbl_question.attributedText];

[text addAttribute: NSForegroundColorAttributeName value: [UIColor colorWithRed:52.0f/255.0f green:104.0f/255.0f blue:165.0f/255.0f alpha:1.0f] range: NSMakeRange(0,[result integerValue]+1)];

[text addAttribute: NSForegroundColorAttributeName value: [UIColor colorWithRed:75.0f/255.0f green:75.0f/255.0f blue:75.0f/255.0f alpha:2.0f] range: NSMakeRange([result integerValue]+1,[strq length])];
[lbl_question setAttributedText: text];

在iOS 6中它可以正常工作,但在ios 5和更早版本中,这两个字符串每次都被忽略了。 我也希望根据文字和字体获得宽度。根据文字增加身高。

我确信必须有解决方案......请帮我解决这个问题....

3 个答案:

答案 0 :(得分:7)

您可以使用NSMutableAttributedString执行此操作。这也适用于 ios 6,ios 7和ios 8

注意NSMakeRange(startin gpoint从零开始计算,字符数);

    NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:@"RedGreenBlue"];
    [string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,3)];
    [string addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(3,5)];
    [string addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(8,4)];   
    lable.attributedText=string;

由于

答案 1 :(得分:-1)

来自NSAttributedString UIKit Additions Reference:

  

NSForegroundColorAttributeName此属性的值为a   UIColor对象。使用此属性指定文本的颜色   在渲染过程中如果未指定此属性,则文本为   呈现黑色。适用于iOS 6.0及更高版本。

您需要两个标签,或使用TTTAttributedLabel或DTCoreText之类的东西。

答案 2 :(得分:-1)

试试TTTAttributedLabel。它是UILabel的子类,支持NSAttributedStrings,这样可以很容易地在同一个字符串中包含多种颜色,字体和样式。