1

我正在尝试在 iOS 中设置 NSAttributedString 的臭名昭著的 NSFontAttributeName 属性,但它似乎不起作用:

  1. 首先,似乎没有为 iOS 定义任何 NS 常量
  2. 我在某处读到,我可以通过传递 CoreText 常量来解决它。很好......但仍然,该属性需要一个 NSFont 并且我坚持使用 UIFont 或 CTFontRef,这两种方法似乎都不起作用:

这不起作用:

CTFontRef ctFont = CTFontCreateWithName((CFStringRef)[UIFont boldSystemFontOfSize:16].fontName, [UIFont boldSystemFontOfSize:16].pointSize, NULL);
[myAttString addAttribute:(NSString*)kCTFontNameAttribute
                          value:(id)ctFont
                          range:NSMakeRange(0, myAttString.length-1)];

这不起作用:

[myAttString addAttribute:(NSString*)kCTFontNameAttribute
                          value:[UIFont boldSystemFontOfSize:16]
                          range:NSMakeRange(0, myAttString.length-1)];

有没有办法使这项工作?

4

3 回答 3

4

我找到了!

基本上,结果我应该使用的字典键的字符串常量是 kCTFontAttributeName

这整件事就是一场秀...

于 2012-07-11T22:37:56.160 回答
3

NS 常量和完整的属性字符串支持将在那里。不过iOS5还没有。

CoreText 常量确实有效,CTFontRef 也是我使用它的方式。您的代码的第一块应该可以工作。您能否验证您的其他代码位问题不在其他地方。

于 2012-07-11T21:57:56.013 回答
0

这样做:

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .center


let attributes = [NSParagraphStyleAttributeName :  paragraphStyle,
                  NSFontAttributeName :   UIFont.systemFont(ofSize: 24.0),
                  NSForegroundColorAttributeName : UIColor.blue,
                  ]

let attrString = NSAttributedString(string: "Stop\nall Dance",
                               attributes: attributes)
于 2017-05-27T10:00:18.893 回答