Search code examples
ioscocoa-touchcore-textnsattributedstring

how to set attributes in NSAttributedString in iOS?


I'm trying to set the infamous NSFontAttributeName property of an NSAttributedString in iOS but it just doesn't seem to work:

  1. first off, none of the NS constants seem defined for iOS
  2. I read somewhere that I could instead work around it by passing the CoreText consts instead. Fine... but still, The attribute expects an NSFont and I'm stuck with UIFont or CTFontRef, neither of which seems to work:

this doesn't work:

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

this doesn't work:

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

Is there anyway to make this work?


Solution

  • I found it!

    basically, turns out the string constant for the dictionary key I should been using is kCTFontAttributeName

    This whole thing is a show...