我使用NSTextField而不是NSTextView来接收用户输入,但我需要自定义字体和textColor以及行间距。我使用下面的代码,它可以用于字体和颜色,但我不知道如何设置行间距。
[self.titleField setTextColor:textColor];
[self.titleField setFont:bold14];
我还使用NSAttributedString来解决问题:
NSFont *bold14 = [NSFont boldSystemFontOfSize:14.0];
NSColor *textColor = [NSColor redColor];
NSMutableParagraphStyle *textParagraph = [[NSMutableParagraphStyle alloc] init];
[textParagraph setLineSpacing:10.0];
NSDictionary *attrDic = [NSDictionary dictionaryWithObjectsAndKeys:bold14, NSFontAttributeName, textColor, NSForegroundColorAttributeName, textParagraph, NSParagraphStyleAttributeName, nil];
NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:title attributes:attrDic];
[self.titleField setAllowsEditingTextAttributes:YES];
[self.titleField setAttributedStringValue:attrString];
上面的代码可以显示属性字符串,但是当我删除文本字段中的字符串并开始输入时,单词没有任何属性。
如何在NSTextField中输入自定义字体,颜色和行间距的字符串?
答案 0 :(得分:4)
最好使用NSTextField's
属性设置方法而不是NSAttributedString
,因为它可以将设置发送到字段编辑器。每个文本字段都有NSTextView
(大部分时间)“Field Editor”;并且字段编辑器正在进行编辑。
您的NSAttributedString
没有坚持,因为您只是告诉文本字段暂时显示该字符串。弹出字段编辑器时,文本字段(单元格)会传递自己的属性,如textField.font
和textField.textColor
,但不会传递NSAttributedString
的属性。
最好使用NSTextView
来使用-setDefaultParagraphStyle
因为您正在编辑多条线,无论如何,从我看到的。如果你不能,因为性能问题或其他原因,那么:
子类NSTextFieldCell
,因为这是所有NSTextField
的工作原理,并覆盖
- (NSText *)setUpFieldEditorAttributes:(NSText *)textObj
(在NSCell
中声明)以您希望的方式为您的字段编辑器设置属性,因此您可以自己通过-setDefaultParagraphStyle
(和字体等)向其发送行高值。 (textObj
是要设置的字段编辑器。)