NSTextView:以编程方式格式化文本
NSTextView: format text programmatically
如何以编程方式设置 NSTextView 中部分文本的格式?例如,将所有出现的单词 "foo" 设为蓝色或将所有文本设为灰色但当前段落(光标所在的位置)为纯黑色?
谢谢
您可以使用 NSAttributedString
或 NSMutableAttributedString
只需指定文本格式(颜色、文本大小等)并将其传递给您的 NSTextView,例如:
NSString *str = @"test string";
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString: str];
NSDictionary *attributes = @{
NSForegroundColorAttributeName : [NSColor redColor],
NSFontAttributeName : [NSFont fontWithName:@"HelveticaNeue-Bold" size:12.0]
};
[attrString setAttributes:attributes range:NSMakeRange(0, str.length)];
[[self.myNSTextView textStorage] appendAttributedString: attrString];
这会将您的所有文本设置为相同,但只需将范围属性替换为您想要更改的文本的这一部分:
NSMakeRange(0, 2)
这将只向前两个 lerrer 添加文本属性。
如何以编程方式设置 NSTextView 中部分文本的格式?例如,将所有出现的单词 "foo" 设为蓝色或将所有文本设为灰色但当前段落(光标所在的位置)为纯黑色? 谢谢
您可以使用 NSAttributedString
或 NSMutableAttributedString
只需指定文本格式(颜色、文本大小等)并将其传递给您的 NSTextView,例如:
NSString *str = @"test string";
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString: str];
NSDictionary *attributes = @{
NSForegroundColorAttributeName : [NSColor redColor],
NSFontAttributeName : [NSFont fontWithName:@"HelveticaNeue-Bold" size:12.0]
};
[attrString setAttributes:attributes range:NSMakeRange(0, str.length)];
[[self.myNSTextView textStorage] appendAttributedString: attrString];
这会将您的所有文本设置为相同,但只需将范围属性替换为您想要更改的文本的这一部分:
NSMakeRange(0, 2)
这将只向前两个 lerrer 添加文本属性。