iphone - 我怎样才能画出弯曲的阴影?

标签 iphone objective-c macos cocoa drawrect

像这样:

enter image description here

我知道这不适用于 NSShadow,在 drawRect: 中绘制它会工作得很好。

最佳答案

您可以使用 Core Animations 图层和 shadowPath 属性来执行此操作和许多其他类型的阴影。您所描述的阴影可以用椭圆形阴影路径制作。

enter image description here

产生这个阴影的代码如下。您可以调整椭圆的大小以获得更圆的阴影形状。您还可以使用图层上的阴影属性调整位置、不透明度、颜色和模糊半径。

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);

只是为了展示一些使用相同技术无法创建的其他阴影的示例;像这样的路径

enter image description here

会产生这样的影子

enter image description here

关于iphone - 我怎样才能画出弯曲的阴影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18676619/

相关文章:

iphone - 在 XCode 4.2 空应用程序模板中使用 Interface Builder 将 tabbarcontroller 添加到 AppDelegate 的步骤

ruby - 运行 pod 设置给我 "bad interpreter: No such file or directory"错误

macos - 海湾合作委员会警告 : implicit declaration of function 'puts' is invalid in C99

Iphone 应用程序在横向启动后没有响应

objective-c - UITextChecker 25 个字母单词

ios - 一个 Storyboard中 iPhone 和 iPad 的不同方向

objective-c - 释放和自动释放有什么区别?

xcode - 从 Xcode 中的 OSX 模拟器删除应用程序

ios - 动态改变TableView Cell高度

iphone - 隐藏 TabBar 时设置 View 中的 Toolbar 位置