objective-c - maskToBounds 设置为 NO 似乎没有效果

标签 objective-c cocoa layer shadow

我是 Obj-C 开发的新手,目前遇到一个简单的问题。我正在尝试创建一个 NSView 并添加边框和阴影,我有以下代码:

_view.wantsLayer = YES;
CALayer *layer = _view.layer;

layer.masksToBounds = NO;
layer.borderWidth = 2;
layer.shadowColor = [[NSColor blackColor] CGColor];
layer.shadowOffset = CGSizeMake(2, -2);
layer.shadowOpacity = 1;
layer.shadowRadius = 6;

显然,这应该有效,因为我已将 maskToBounds 设置为 NO,但我无法得到比这更好的东西:

freaking shadow

看到了吗?影子无法走出盒子。我错过了什么?我已经检查了有关此主题的许多主题,但找不到任何内容来解决此问题...

最佳答案

问题是,托管 View 将图层剪切到其边界。

您可以尝试在其 super View 上启用图层支持:

[_view superview].wantsLayer = YES;
CALayer *layer = _view.layer;

layer.masksToBounds = NO;
layer.borderWidth = 2;
layer.shadowColor = [[NSColor blackColor] CGColor];
layer.shadowOffset = CGSizeMake(2, -2);
layer.shadowOpacity = 1;
layer.shadowRadius = 6;

鉴于 super View 足够大,这也应该绘制位于 View 边界之外的核心动画层部分。

enter image description here

关于objective-c - maskToBounds 设置为 NO 似乎没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878555/

相关文章:

iphone - 遍历 NSFetchRequest 结果时无错误地崩溃

cocoa - 如何从 Cocoa 应用程序中显示 Finder 上下文菜单?

Xcode调试器: Why is it only showing me assembler?

android - 如何在android中的应用程序顶层设置页脚?

python - "tensorflow.math.multiply"和 "tensorflow.keras.layers.multiply"和有什么区别?

ios - NSInvalidArgumentException -[__NSCFString unsignedLongLongValue] : unrecognized selector sent to instance

ios - 使用自动布局以编程方式将 subview 添加到 UIView 时来源错误

ios - 如何使用带有 HTTPS 和自签名服务器证书的 AVPlayer?

cocoa - Cocoa 中转换/编码为 AAC 的方法有哪些?

swift - 添加高斯模糊到图层背景颜色?