我想圆,并从一个的NSView派生类与下面的代码阴影:如果没有舍入,它不会没有影子,如果边缘是圆上的NSView
[graphHostView setWantsLayer:YES];
graphHostView.layer.shadowRadius = 5.0;
graphHostView.layer.shadowOffset = NSMakeSize(10.0f, -10.0f);
graphHostView.layer.shadowOpacity = 0.5f;
graphHostView.layer.needsDisplayOnBoundsChange = YES;
graphHostView.layer.masksToBounds = YES;
graphHostView.layer.cornerRadius = 10.0;
[graphHostView.layer setNeedsLayout];
阴影只工作如果四舍五入出现第一或第二,这很重要我还可以间接地从视图与代码阴影:
NSShadow * myShadow = [[NSShadow的alloc] INIT]; [myShadow setShadowOffset:NSMakeSize(10.0f,-10.0f)]; [myShadow setShadowBlurRadius:3.0]; [graphHostView setShadow:myShadow]; [myShadow set];
具有完全同样的效果。我已经尝试了显示,setNeedsLayout和其他属性和方法的所有组合,并没有任何工作。
它令人难以置信的在我看来,这是不行的,毕竟,NSWindow呈圆形,并且阴影...
被提醒我要补充一点,我曾尝试也适用阴影背衬层上相同的结果。 由于masksToBounds会果然掩盖范围之外的任何东西,它是合理地相信阴影不能同一层上显示。 这也是明确的,即屏蔽有可能被添加到该层也过去了,屏蔽之后,因为设置阴影和口罩没有和作用,对结果的顺序上的任何影响。
所以,问题仍然是,如何实现想要的结果,而不与阴影驾驶下面的另一个的NSView这是可能的呢?
是否masksToBounds防止你的影子的绘制(因为它是在边界之外?) – jrturton 2012-01-05 12:00:26
感谢您的提示,我已经更新了这个问题。 :) – mbpro 2012-01-05 12:19:41