如何在iOS中的NSAttributedString中设置属性?

时间:2012-07-11 21:41:53

标签: ios cocoa-touch core-text nsattributedstring

我试图在iOS中设置NSAttributedString的臭名昭着的NSFontAttributeName属性,但它似乎无法正常工作:

  1. 首先,似乎没有为iOS定义NS常量
  2. 我读到某个地方,我可以通过传递解决它 CoreText反而适合。很好...但仍然,属性 我希望NSFont和我一直坚持使用UIFont或CTFontRef 这似乎有效:
  3. 这不起作用:

    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)];
    

    有没有让这项工作?

3 个答案:

答案 0 :(得分:4)

我找到了它!

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

整个事情都是一场秀......

答案 1 :(得分:3)

NS常量和完整的attributionString支持将在那里。但是还没在iOS5中。

CoreText常量可以正常工作,而CTFontRef也是我使用它的方式。你的代码的第一个块应该工作。你可以验证你的其他代码,问题不在其他地方。

答案 2 :(得分: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)