支持层的视图由 OpenGL 分层(嗯,Quartz 合成器,但它有助于将每一层视为一个带有 OpenGL 纹理的多边形),因此它们始终支持正确的重叠。
CocoaBuilder/Cocoa-Dev 上的线程根本没有提到层。这意味着它谈论没有支持 CALayer 的常规 NSView(或者更确切地说,整个窗口只有一个 CALayer)。
提到的一个例外是 OpenGLView(同样,没有图层),它总是在窗口顶部合成它的 OpenGL 矩形,消除任何子视图。我不认为制作一个支持 NSOpenGLView 层的作品,但可以使用一个 OpenGL 层,它将在其他层之间正确合成。
另一个例外是非层支持视图之上的层,这是有道理的,因为所有非层支持的视图都有效地驻留在一个层中,该层当然位于其任何子层之下(由层支持的视图托管在非层支持的父视图中必须是)。
所以简而言之,它从 10.5 开始适用于非分层视图,并且永远适用于分层支持的视图,当您混合匹配或使用 OpenGL 时需要注意。
PS - 不过,我不是 100% 肯定关于重叠的非层支持视图的声明应该被视为规范。这是苹果工程师的非正式声明。事情可能已经改变,并且可能已经发现了使事情无法正常工作的错误。当我想要正确重叠时,我通常使用图层。