层支持的NSView兄弟姐妹是否允许重叠?

Joh*_*rug 11 cocoa core-animation calayer nsview

我有点困惑.在苹果文档的状态如下:

注意:出于性能原因,Cocoa不会在同级视图中强制执行剪切,也不会在兄弟视图重叠时保证正确的失效和绘制行为.如果要在另一个视图前绘制视图,则应将前视图设置为后视图的子视图(或后代).

因此,根据这一点,兄弟视图不应该重叠,否则行为是不确定的.

然而,在Cocoa Slides演示应用程序中,支持图层的NSView兄弟会重叠,它似乎工作得很好:

Cocoa Slides截图

那么Cocoa Slides示例代码是错误的,它只是一个巧合,它是否有效,或者文档是否过时了?从10.5开始过时,那是什么?

cor*_*unn 9

在Leopard及更高版本上,重叠视图可以正常工作,是否支持图层.

  • 乌利,这是引用:) (4认同)
  • {citation needed} (3认同)
  • 我对这个主题的观察与@uliwitness答案相符.混合和匹配图层支持和非图层支持的视图时,需要注意. (2认同)

Joh*_*rug 7

经过一些研究,似乎Apple文档确实已经过时了.

自10.5以来,允许层支持的NSView兄弟重叠.

从2009年的讨论,涉及到苹果的工程师大卫·邓肯和科尔宾邓恩终于提供了一些明确的答案:

重叠的视图适用于Leopard,但在此之前不起作用.文档已过期.

我有一组视图,每个视图里面有许多较小的视图,需要以重叠的方式呈现在窗口上的同一个矩形中,以便可以通过彼此看到它们.在我的初步测试中,我将每个大视图都视为单个背景视图的兄弟.计划在必要时通过重新安排z顺序将每个人带到前面.这个应用中有未来(或现在)吗?

这将适用于Leopard.

资料来源:http://www.cocoabuilder.com/archive/cocoa/228191-nsview-behaves-different-on-10-4-vs-10-5.html#228983

更新: 詹姆斯·登普西也说在Twitter上:

我的理解是重叠的兄弟视图从10.5开始就可以了,无论是否支持层.