我是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
,但我无法获得比这更好的内容:
请参阅?阴影不能超出盒子。我错过了什么?我已经检查过很多关于这个主题的话题,但我找不到任何解决这个问题的方法......
答案 0 :(得分:2)
问题是,托管视图会将图层剪切到其边界。
您可以尝试在其超级视图上启用图层支持:
[_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;
鉴于superview足够大,这也应该绘制核心动画层中位于视图边界之外的部分。