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

Macos Cocoa:[self.view setWantsLayer:YES]是否将该视图置于其他子视图之上?,macos,cocoa,calayer,subview,Macos,Cocoa,Calayer,Subview,简单地说,我有一个带有一堆子视图的NSView。在awakeFromNib方法(在视图的控制器内)中,我决定添加以下内容: [_backgroundImageView setWantsLayer:YES]; [[_backgroundImageView layer] setShadowOpacity:1.0f]; [[_backgroundImageView layer] setShadowOffset:NSMakeSize(-3, -3)]; backgroundImageView位于所有子

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

[_backgroundImageView setWantsLayer:YES];
[[_backgroundImageView layer] setShadowOpacity:1.0f];
[[_backgroundImageView layer] setShadowOffset:NSMakeSize(-3, -3)];
backgroundImageView位于所有子视图的后面。但是,当我添加前面的代码时,它正确地绘制了阴影,但也在所有其他层之上绘制了backgroundImageView。为什么?如何解决这个问题?

您需要在superview的代码中设置WantLayer:YES。


结果我也应该为superview(self.view)启用图层。不仅如此,我还应该收紧imageView的框架,否则它将“独立于轴”进行缩放,即使它被设置为“按比例向上或向下”。

然而,最终,我将阴影添加到图像=/。。为什么?绘图时出现问题。使用interface builder与此无关,您只需在代码中的_backgroundImageView的superview上调用SetWantLayer:YES即可。@valexa是的,谢谢。我只是在打开NIB文件时才发现。我希望我以前就知道……谢谢你的问答——救了我:)