NSView 图层阴影绘制在子视图上,而不是视图本身

NSView layer shadow draws on subviews, not view itself

我正在尝试在 NSViewlayer 上设置阴影,但是图层是在我的视图的子视图上绘制的,而不是视图本身。是什么原因造成的?

有问题的视图及其所有子视图都是图层支持的。除了一个子视图外,所有子视图都是带有图像的按钮 (NSButton) - 另一个是通过 drawRect:.

呈现的自定义视图
self.layer.shadowColor = [[NSColor blackColor] colorWithAlphaComponent:0.9].CGColor;
self.layer.shadowRadius = 2;
self.layer.shadowOffset = NSMakeSize(0, -1);
self.layer.shadowOpacity = 0.9;

我也尝试通过 NSShadow 设置阴影,结果相同。

事实证明,如果您在 NSViewlayer 上设置阴影,它只会在该视图具有 drawRect: 实现绘制非-透明的。否则它会利用所有视图的子视图。

奇怪。