Cocoa:[self.view setWantsLayer:YES]将该视图置于其他子视图之上?

Maz*_*yod 1 macos cocoa subview calayer

简单地说,我有NSView一堆子视图.在awakeFromNib方法中(在视图的控制器内),我决定添加以下内容:

[_backgroundImageView setWantsLayer:YES];
[[_backgroundImageView layer] setShadowOpacity:1.0f];
[[_backgroundImageView layer] setShadowOffset:NSMakeSize(-3, -3)];
Run Code Online (Sandbox Code Playgroud)

backgroundImageView位于所有子视图的后面.但是,当我添加前面的代码时,它会正确绘制阴影,但也会将backgroundImageView绘制在所有其他图层之上.为什么?我怎么能解决这个问题?

Maz*_*yod 6

好吧,当我撕开我的头发时,幸运的是我在撕开最后一根头发之前找到了解决方案.

使用界面构建器(或仅setWantsLayer:用于superview的代码).

我在Xcode中打开了nib文件,并使用了imageView的图层属性.转出来我也应该为superview启用图层(self.view).不仅如此,我还应该收紧imageView的框架,否则即使将其设置为"按比例向上或向下",它也会"独立地"缩放.

和平...