NSAttributedString字体

时间:2012-08-02 04:50:29

标签: ios nsattributedstring

如何在iPhone上设置NSAtributedString的字体。我在网上找到了如何为mac做这件事,但它不一样。当我试图将它转换到iOS平台时,它无法正常工作。我需要设置字体名称和字体大小。

 NSDictionary *attributes = [[NSDictionary alloc] initWithObjectsAndKeys:
                                [UIFont fontWithName:@"Helvetica" size:26], kCTFontAttributeName,
                                [UIColor blackColor], kCTForegroundColorAttributeName, nil];

2 个答案:

答案 0 :(得分:7)

查看代码

infoString=@"This is an example of Attributed String";

NSMutableAttributedString *attString=[[NSMutableAttributedString alloc] initWithString:infoString];
NSInteger _stringLength=[infoString length];

UIColor *_black=[UIColor blackColor];
UIFont *font=[UIFont fontWithName:@"Helvetica-Bold" size:30.0f];
[attString addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, _stringLength)];
[attString addAttribute:NSForegroundColorAttributeName value:_black range:NSMakeRange(0, _stringLength)];

答案 1 :(得分:6)

kCTFontAttributeName的值必须是CTFontRef,而不是UIFont *。您无法直接将UIFont转换为CTFont。您应该只能使用CTFontCreateWithName来创建它。完成后,您需要使用CFRelease,以避免内存泄漏。查看CTFont Reference

此外,kCTForegroundColorAttributeName的值必须是CGColorRef,而不是UIColor *。您可以通过说[UIColor blackColor].CGColor轻松解决此问题。

更新

如果您正在使用UIKit属性字符串支持(在iOS 6.0中添加),则可以使用NSFontAttributeName键并将UIFont作为值。您还可以使用NSForegroundColorAttributeName键并使用UIColor值。请参阅NSAttributedString UIKit Additions Reference