我花了一些时间试图弄清楚如何为NSView
添加阴影。目前,我正在尝试使用NSShadow
类来完成此任务。我的代码如下。我试图在NSView
子类中的自定义init方法中创建阴影。无论我尝试什么,都不会出现阴影。
NSShadow *dropShadow = [[NSShadow alloc] init];
[dropShadow setShadowColor:[NSColor blackColor]];
[self setWantsLayer:YES];
[self setShadow:dropShadow];
修改
以下是我尝试使用CALayer
进行此操作的方法。
self.layer.shadowOffset = CGSizeMake(10, 10);
self.layer.shadowOpacity = 1.0;
self.layer.shadowRadius = 10.0;
self.layer.shadowPath = [self quartzPathFromBezierPath:[NSBezierPath bezierPathWithRect:frame]];
quartzPathFromBezierPath:
将NSBezierPath
转换为CGPath
。
答案 0 :(得分:4)
将此与偏移量一起使用,其他参数需要设置
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
NSShadow *dropShadow = [[NSShadow alloc] init];
[dropShadow setShadowColor:[NSColor redColor]];
[dropShadow setShadowOffset:NSMakeSize(0, -10.0)];
[dropShadow setShadowBlurRadius:10.0];
[self setWantsLayer: YES];
[self setShadow: dropShadow];
[dropShadow release];
}
return self;
}
答案 1 :(得分:0)
NSShadow
的替代方法是获取视图图层并使用其与阴影相关的属性。特别是,请务必将shadowOpacity
设置为高于0(默认值)的值。
请注意,您不能同时使用阴影偏移和阴影路径。
答案 2 :(得分:0)
尝试遵循以下答案,Here
我认为最重要的一行是self.view.superview?.wantsLayer = true