Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 透明NSTextView性能_Macos_Cocoa_Nstextview - Fatal编程技术网

Macos 透明NSTextView性能

Macos 透明NSTextView性能,macos,cocoa,nstextview,Macos,Cocoa,Nstextview,我有一个NSWindow,上面有一个NSImage和一个NSTextView,上面有一个长文本,如果我用坚实的背景绘制,文本编辑速度很快 但是如果我在没有背景的情况下画画,[self-setDrawsBackground:no]速度非常慢 有更新吗?我也试过了 [self setDrawsBackground:YES]; [self setBackgroundColor:[NSColor clearColor]]; 可能使用NSTextView的setBackgroundFilte

我有一个NSWindow,上面有一个NSImage和一个NSTextView,上面有一个长文本,如果我用坚实的背景绘制,文本编辑速度很快

但是如果我在没有背景的情况下画画,
[self-setDrawsBackground:no]
速度非常慢

有更新吗?我也试过了

  [self setDrawsBackground:YES];
    [self setBackgroundColor:[NSColor clearColor]];
可能使用NSTextView的setBackgroundFilters


谢谢

我找到了部分解决方案。如果禁用字体的平滑处理,则性能会大大提高。 首先,必须有一个子类NSTextView。 那么

此外,您可以使用:

self.textview.layoutManager.allowsNonContiguousLayout = YES;
稍微提高性能


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

我找到了部分解决方案。如果禁用字体的平滑处理,则性能会大大提高。 首先,必须有一个子类NSTextView。 那么

此外,您可以使用:

self.textview.layoutManager.allowsNonContiguousLayout = YES;
稍微提高性能


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

我认为问题与图像大小有关,而不是与文本视图有关:它将在图像视图上执行重新绘制/更新请求,这可能会很昂贵。您能否跟踪图像的重画和/或使用分辨率非常小的图像进行测试?图像不是问题所在,如果删除图像,问题仍然存在。问题是透明NSTextView的性能…好的,我明白了。我脑子里最后想到的一件事(否则我不知道):文本视图的大小是动态的吗?然后一个测试显然是确定它的大小,以便将其从罪犯列表中排除。是的,它的最大高度为10000000,否则我不能使用长文本。顺便说一句,这是在Interface Builder中添加NSTextView时的默认值。是否尝试在视图上启用核心动画层?这可能会带来一点性能提升。我认为问题与图像大小有关,而不是与文本视图有关:它将在图像视图上执行重新绘制/更新请求,这可能会很昂贵。您能否跟踪图像的重画和/或使用分辨率非常小的图像进行测试?图像不是问题所在,如果删除图像,问题仍然存在。问题是透明NSTextView的性能…好的,我明白了。我脑子里最后想到的一件事(否则我不知道):文本视图的大小是动态的吗?然后一个测试显然是确定它的大小,以便将其从罪犯列表中排除。是的,它的最大高度为10000000,否则我不能使用长文本。顺便说一句,这是在Interface Builder中添加NSTextView时的默认值。是否尝试在视图上启用核心动画层?这可能会带来一点性能提升。