1

我是 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;

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

该死的影子

看?影子不能走出盒子。我错过了什么?我已经检查了很多关于这个主题的主题,但我找不到任何可以解决这个问题的东西......

4

1 回答 1

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;

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

在此处输入图像描述

于 2013-06-02T07:11:39.560 回答