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

如何在iOS中的NSAttributedString中设置属性?,ios,cocoa-touch,core-text,nsattributedstring,Ios,Cocoa Touch,Core Text,Nsattributedstring,我试图在iOS中设置NSAttributedString的臭名昭著的NSFontAttributeName属性,但它似乎不起作用: 首先,似乎没有为iOS定义任何NS常量 我在某个地方读到,我可以通过路过来解决这个问题 相反,CoreText是常量。好的但是,属性 需要NSFont,我只能使用UIFont或CTFontRef,两者都不能 这似乎有效: 这不起作用: CTFontRef ctFont = CTFontCreateWithName((CFStringRef)[UIFont boldS

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

  • 首先,似乎没有为iOS定义任何NS常量
  • 我在某个地方读到,我可以通过路过来解决这个问题 相反,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)];
    
    这不起作用:

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

    还有其他方法可以实现这一点吗?

    NS常量和完整的attributedString支持将在这里提供。但在iOS5中还没有


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

    NS常量和完整的AttributeString支持将在那里提供。但在iOS5中还没有

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

    我找到了

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

    整件事都是一场表演…

    我找到了

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

    这一切都是一场表演…

    请这样做:

    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)
    
    这样做:

    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)
    

    我的全部代码都和我展示的一样。。。然后将属性字符串设置为CATextLayer的字符串。但至少在屏幕上显示CALayer时,字体属性似乎没有生效。我还尝试设置颜色属性而不是字体名称,以防与CA相关。。例如,该属性的效果很好。我甚至尝试对字体进行硬编码,如下所示:“CTFontRef ctFont=CTFontCreateWithName((CFStringRef)@“Helvetica Bold”,20,NULL);”还是没什么好吧我的整个代码都和我展示的一样。。。然后将属性字符串设置为CATextLayer的字符串。但至少在屏幕上显示CALayer时,字体属性似乎没有生效。我还尝试设置颜色属性而不是字体名称,以防与CA相关。。例如,该属性的效果很好。我甚至尝试对字体进行硬编码,如下所示:“CTFontRef ctFont=CTFontCreateWithName((CFStringRef)@“Helvetica Bold”,20,NULL);”还是什么都没有