Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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

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 &引用;CoreAnimation:曲面太大“;_Macos_Cocoa_Core Animation - Fatal编程技术网

Macos &引用;CoreAnimation:曲面太大“;

Macos &引用;CoreAnimation:曲面太大“;,macos,cocoa,core-animation,Macos,Cocoa,Core Animation,我正在创建一个自定义(层宿主)文档视图,它包含在一个滚动视图中。根层有两个大小相同的子层——一个用于视图内容,另一个用于需要悬停在主内容上的任何内容。我将框架设置为2500x2500,并向内容层添加了许多单元格,这很好。将一个单元层的半透明克隆添加到覆盖层时,整个视图会短暂清除,我会收到一条日志消息“core animation:surface 2502x2502太大”。这发生在添加新层和事件循环的下一个周期之间,因此我猜核心动画何时渲染新层 我知道一个图层的内容大小和opengl的纹理大小有关

我正在创建一个自定义(层宿主)文档视图,它包含在一个滚动视图中。根层有两个大小相同的子层——一个用于视图内容,另一个用于需要悬停在主内容上的任何内容。我将框架设置为2500x2500,并向内容层添加了许多单元格,这很好。将一个单元层的半透明克隆添加到覆盖层时,整个视图会短暂清除,我会收到一条日志消息“core animation:surface 2502x2502太大”。这发生在添加新层和事件循环的下一个周期之间,因此我猜核心动画何时渲染新层

我知道一个图层的内容大小和opengl的纹理大小有关,但我认为它的框架并不重要。我不会为这些层绘制任何图形,不会设置任何样式属性,也不会删除屏幕外的子层。我真正使用它们的目的就是处理文档视图的几何图形。这是CA层的适当使用吗?如果没有,是否有更好的方法处理基于大型核心动画的文档视图

编辑:


我又遇到了这个问题,这是由向大型父对象添加子层时的隐式动画引起的。因此,除了下面建议的内容外,还需要检查您是否遇到此问题。

我会检查以确保您没有在2500x2500层上设置任何可能需要屏幕外渲染的属性。(这会导致层尝试在屏幕外创建一个全尺寸缓冲区,并将其内容渲染到该缓冲区中,而不是直接将内容渲染到屏幕上。)


例如,设置不透明度、masksToBounds、mask、shouldRasterize等可能会导致屏幕外渲染。您可以查看是否正在使用Core动画工具进行屏幕外渲染。(有一个复选框可以突出显示屏幕外的渲染区域。)

这是一个很好的建议,但看起来核心动画工具只是iOS。是否有任何方法可以通过调用层上的方法或触发屏幕外渲染的某个地方的属性列表来检查屏幕外渲染?(在文档中看不到这方面的任何内容)哦,对不起,出于某种随机原因,我的大脑处于iOS模式。有什么原因不能只将NSView用于父视图吗?我应该说,我不确定这是否真的有用;我发现CALayers在Cocoa中很难使用,如果可能的话,尽量只在视图层次结构的叶子上使用。我假设有两层承载子视图的视图与有两个子层的视图没有什么不同,但值得一试。很好,尝试过了,可以管理2500000000x2500000000的内容大小,我很确定它没有被缓冲:)。还是不知道为什么它以前不起作用,不过。。。