5

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

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

2 回答 2

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)];
于 2012-08-02T04:54:25.480 回答
6

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

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

更新

如果您使用 UIKit 属性字符串支持(在 iOS 6.0 中添加),您可以使用NSFontAttributeName带有 aUIFont作为值的键。您还可以将NSForegroundColorAttributeName键与UIColor值一起使用。请参阅NSAttributedString UIKit 添加参考

于 2012-08-02T05:07:56.870 回答