我是 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
,但我无法得到比这更好的东西:
看到了吗?影子无法走出盒子。我错过了什么?我已经检查了有关此主题的许多主题,但找不到任何内容来解决此问题...
最佳答案
问题是,托管 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 边界之外的核心动画层部分。
关于objective-c - maskToBounds 设置为 NO 似乎没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878555/