像这样:
我知道这不适用于 NSShadow
,在 drawRect:
中绘制它会工作得很好。
最佳答案
您可以使用 Core Animations 图层和 shadowPath
属性来执行此操作和许多其他类型的阴影。您所描述的阴影可以用椭圆形阴影路径制作。
产生这个阴影的代码如下。您可以调整椭圆的大小以获得更圆的阴影形状。您还可以使用图层上的阴影属性调整位置、不透明度、颜色和模糊半径。
self.wantsLayer = YES;
NSView *viewWithRoundShadow = [[NSView alloc] initWithFrame:NSMakeRect(30, 30, 200, 100)];
[self addSubview:viewWithRoundShadow];
CALayer *backingLayer = viewWithRoundShadow.layer;
backingLayer.backgroundColor = [NSColor orangeColor].CGColor;
// Configure shadow
backingLayer.shadowColor = [NSColor blackColor].CGColor;
backingLayer.shadowOffset = CGSizeMake(0, -1.);
backingLayer.shadowRadius = 5.0;
backingLayer.shadowOpacity = 0.75;
CGRect shadowRect = backingLayer.bounds;
CGFloat shadowRectHeight = 25.;
shadowRect.size.height = shadowRectHeight;
// make narrow
shadowRect = CGRectInset(shadowRect, 5, 0);
backingLayer.shadowPath = CGPathCreateWithEllipseInRect(shadowRect, NULL);
只是为了展示一些使用相同技术无法创建的其他阴影的示例;像这样的路径
会产生这样的影子
关于iphone - 我怎样才能画出弯曲的阴影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18676619/