将NSString转换为NSAttribtuedString以进行绘制

时间:2012-10-04 11:38:06

标签: objective-c ios nsstring nsattributedstring

我有一个用代码

绘制的字符串

[@"-" drawInRect: r withFont: f2 lineBreakMode: UILineBreakModeWordWrap alignment: UITextAlignmentCenter];

但是我想更改此字符串中的颜色,因为NSString无法将其修改为NSAttributedString。

然而这不起作用,这是我修改过的代码,我找不到其他参数的属性

NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:f2,NSFontAttributeName,
                                        nil];

    NSAttributedString *drawingString = [[NSAttributedString alloc]  initWithString:@"-" attributes:attrsDictionary];

    [drawingString drawInRect:r];

感谢任何帮助,这是否是正确的方法。

2 个答案:

答案 0 :(得分:2)

谢谢!这是我最终编辑的代码

    NSMutableParagraphStyle *paraAttr = [[NSMutableParagraphStyle defaultParagraphStyle ] mutableCopy];
    [paraAttr setAlignment:UITextAlignmentCenter];
    [paraAttr setLineBreakMode:UILineBreakModeWordWrap];


    NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:f2,NSFontAttributeName,
                                        [UIColor grayColor],NSForegroundColorAttributeName,
                                        paraAttr,NSParagraphStyleAttributeName,
                                         nil];


    NSAttributedString *drawingString = [[NSAttributedString alloc]  initWithString:@"•" attributes:attrsDictionary];


    [drawingString drawInRect:r];

答案 1 :(得分:1)

您还需要设置NSForegroundColorAttributeName属性。

这里是complete list - 在常量部分:

NSString *const NSFontAttributeName;
NSString *const NSParagraphStyleAttributeName;
NSString *const NSForegroundColorAttributeName;
NSString *const NSBackgroundColorAttributeName;
NSString *const NSLigatureAttributeName;
NSString *const NSKernAttributeName;
NSString *const NSStrikethroughStyleAttributeName;
NSString *const NSUnderlineStyleAttributeName;
NSString *const NSStrokeColorAttributeName;
NSString *const NSStrokeWidthAttributeName;
NSString *const NSShadowAttributeName;
NSString *const NSVerticalGlyphFormAttributeName;