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

时间:2012-03-22 15:34:10

标签: macos cocoa calayer subview

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

[_backgroundImageView setWantsLayer:YES];
[[_backgroundImageView layer] setShadowOpacity:1.0f];
[[_backgroundImageView layer] setShadowOffset:NSMakeSize(-3, -3)];

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

1 个答案:

答案 0 :(得分:6)

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

在超级视图的代码中使用界面构建器(或仅setWantsLayer:)。

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

...和平