如何设置NSAttributedString属性iOS中?(how to set attribute

2019-07-30 08:52发布

我想设置一个NSAttributedString iOS中臭名昭著的NSFontAttributeName属性,但它只是似乎并不工作:

  1. 首先,没有NS常数似乎适用于iOS定义
  2. 我读的地方,我可以工作,而不是围绕它通过传递CoreText consts代替。 美术......但尽管如此,预计属性的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)];

反正有做这项工作?

Answer 1:

我找到了!

基本上,原来的我应该一直在使用字典的键字符串常量kCTFontAttributeName

这整个事情是一个节目...



Answer 2:

该NS常数和全attributedString支持将在那里。 尚未在iOS5中虽然。

该CoreText常数做工作,CTFontRef是我使用它,以及方式。 你的代码的第一块应该工作。 您可以验证的代码的其他位,这个问题是不是其他地方。



Answer 3:

做到这一点的方法:

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)


文章来源: how to set attributes in NSAttributedString in iOS?