繁体   English   中英

NSTextField添加行间距

[英]NSTextField add line spacing

我使用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中输入自定义字体,颜色和行间距的字符串?

最好使用NSTextField's属性设置方法而不是NSAttributedString因为它可以将设置发送到字段编辑器。 每个文本字段都有一个NSTextView (大多数时候)“ Field Editor ”; 并且字段编辑器正在进行编辑。

你的NSAttributedString没有坚持,因为你只是告诉文本字段暂时显示那个字符串。 弹出字段编辑器时,文本字段(单元格)会传递自己的属性,如textField.fonttextField.textColor但不会NSAttributedString的属性。

最好使用NSTextView来使用-setDefaultParagraphStyle因为你正在编辑多条线,从我看到的。 如果你不能,因为性能问题或其他原因,那么:


子类NSTextFieldCell ,因为这是所有NSTextField工作和覆盖的内容

- (NSText *)setUpFieldEditorAttributes:(NSText *)textObj

(在NSCell声明)以您希望的方式为您的字段编辑器设置属性,因此您可以通过-setDefaultParagraphStyle (和字体等)自己发送行高度值。 textObj是要设置的字段编辑器)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM