我有一个 NSTextField,我想让用户有机会使不可见的字符,如空格、回车和制表符可见。不幸的是,我在 Apple 的文档中没有找到关于此的信息。我假设我在寻找它时没有使用正确的术语。
任何线索如何做到这一点?
我有一个 NSTextField,我想让用户有机会使不可见的字符,如空格、回车和制表符可见。不幸的是,我在 Apple 的文档中没有找到关于此的信息。我假设我在寻找它时没有使用正确的术语。
任何线索如何做到这一点?
首先,我会选择一个 NStextView,其中已经为您设置了相关的 NSLayoutManager 和 NSTextStorage 组件。然后,您可以通过执行以下步骤来实现您想要做的事情:
子类 NSATSTypesetter 通过覆盖为您想要的任何字符绘制自定义字形:
- (void)drawGlyphsForGlyphRange:(NSRange)glyphsToShow atPoint:(NSPoint)origin
- (NSRect)boundingBoxForControlGlyphAtIndex:(NSUInteger)glyphIndex forTextContainer:(NSTextContainer *)textContainer proposedLineFragment:(NSRect)proposedRect glyphPosition:(NSPoint)glyphPosition characterIndex:(NSUInteger)charIndex
Subclass NSLayoutManager and set its type setter with the above one.
Then override:
-(void)drawGlyphsForGlyphRange:(NSRange)glyphsToShow atPoint:(NSPoint)origin
{
[self.typesetter drawGlyphsForGlyphRange:glyphsToShow atPoint:origin];
[super drawGlyphsForGlyphRange:glyphsToShow atPoint:origin];
}
用上面的替换NSTextView的布局管理器:
[[textView textContainer] replaceLayoutManager:[[[MyLayoutManager alloc] init] autorelease]];
基本上,您必须检查 NSLayoutManager 和 NSATSTypesetter 类以获取与文本自定义绘图相关的任何内容。这里还有关于这一切的详细指南。