透明的NSTextView性能

时间:2016-03-01 16:25:08

标签: macos cocoa nstextview

我有一个带有NSImage的NSWindow和一个带有长文本http://www.gutenberg.org/cache/epub/100/pg100.txt的NSTextView,如果我用纯色背景绘制,文本编辑很快。

但是如果我画的没有背景,[self setDrawsBackground:NO]它很慢。

有任何更新吗?我也试过

  [self setDrawsBackground:YES];
    [self setBackgroundColor:[NSColor clearColor]];

也许使用NSTextView的setBackgroundFilters?

谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了部分解决方案。如果禁用平滑的字体,性能会提高很多。 首先,您必须拥有NSTextView的子类。 然后,

- (void)drawRect:(NSRect)dirtyRect
{
    [[NSGraphicsContext currentContext] setShouldAntialias:YES];
    CGContextSetShouldAntialias((CGContextRef)[[NSGraphicsContext currentContext] graphicsPort], YES);
    CGContextSetShouldSmoothFonts((CGContextRef)[[NSGraphicsContext currentContext] graphicsPort], NO);

    [super drawRect:dirtyRect];

    // Drawing code here.
}

此外,您可以使用:

self.textview.layoutManager.allowsNonContiguousLayout = YES;

稍微改善表现。

这与具有不透明背景不同,但它有帮助。