2

我有一个 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 和更早的版本中,这两个字符串每次都会重叠。我也想根据文本和字体获得宽度。根据他们的文字增加高度。

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

4

3 回答 3

7

你可以使用 NSMutableAttributedString 来做到这一点。这也适用于ios 6、ios 7 和 ios 8

请注意 NSMakeRange(starting 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;

谢谢

于 2013-12-11T07:49:24.893 回答
-1

从 NSAttributedString UIKit 添加参考:

NSForegroundColorAttributeName 该属性的值是一个 UIColor 对象。使用此属性可在渲染期间指定文本的颜色。如果不指定此属性,则文本以黑色呈现。在 iOS 6.0 及更高版本中可用。

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

于 2013-07-26T14:08:19.363 回答
-1

试试TTTAttributedLabel。它是 support 的一个子类UILabelNSAttributedStrings它可以很容易地在同一个字符串中拥有多种颜色、字体和样式。

于 2013-07-26T14:10:47.637 回答