如何在iOS 5.1及更低版本的UILabel中创建多色文本

时间:2013-07-24 06:17:51

标签: iphone ios uilabel

我想创建一个包含不同颜色文本的标签。像这样,

enter image description here

我在iOS 6中使用NSMutableAttributedString

完成了此操作
 NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithAttributedString: self.exerciseLbl.attributedText];
[text addAttribute: NSForegroundColorAttributeName value: [UIColor colorWithRed:(187/255.0) green:(57/255.0) blue:(38/255.0) alpha:1] range: NSMakeRange(0, 2)];
[self.exerciseLbl setAttributedText: text];

但这不适用于iOS 5.1及更低版本。那么我怎样才能在iOS 5中获得相同的结果。

3 个答案:

答案 0 :(得分:1)

/**(1)** Build the NSAttributedString *******/

NSMutableAttributedString* attrStr = [NSMutableAttributedString attributedStringWithString:@"Hello World!"];
// for those calls we don't specify a range so it affects the whole string
[attrStr setFont:[UIFont systemFontOfSize:12]];
[attrStr setTextColor:[UIColor grayColor]];
// now we only change the color of "Hello"
 [attrStr setTextColor:[UIColor redColor] range:NSMakeRange(0,5)];
/**(2)** Affect the NSAttributedString to the OHAttributedLabel *******/
myAttributedLabel.attributedText = attrStr;`
// Use the "Justified" alignment
`myAttributedLabel.textAlignment = UITextAlignmentJustify;`

答案 1 :(得分:0)

自iOS 6 以来,UIKit支持绘制属性字符串,因此无需扩展或替换。

来自UILabel:

@property(nonatomic, copy) NSAttributedString *attributedText;

您只需要构建NSAttributedString。基本上有两种方式:

附加具有相同属性的文本块 - 为每个部分创建一个NSAttributedString实例并将它们附加到一个NSMutableAttributedString

从普通字符串创建属性文本,然后为给定范围添加属性 - 找到您的数字范围(或其他)并在其上应用不同的颜色属性。

答案 2 :(得分:0)

对于低于6的iOS,您可以继续使用https://github.com/AliSoftware/OHAttributedLabel。它提供了适合我的类别和子类。我希望对你也有帮助。