Iphone 在coregraphics中添加dropshadow-超出上下文边界?

Iphone 在coregraphics中添加dropshadow-超出上下文边界?,iphone,objective-c,core-graphics,Iphone,Objective C,Core Graphics,我想在coregraphics中绘制的按钮上添加dropshadow。除了使按钮比框架小(这是一种混乱的编码,将来你会忘记这一点,并想知道为什么你的按钮不是它应该的大小),我有什么选择来绘制阴影?它也是一个自定义形状。最简单的方法是将其添加到CALayer: #include <QuartzCore/QuartzCore.h> // iOS 4.0 or later [self.layer setShadowColor:[[UIColor blackColor] CGColor]]

我想在coregraphics中绘制的按钮上添加dropshadow。除了使按钮比框架小(这是一种混乱的编码,将来你会忘记这一点,并想知道为什么你的按钮不是它应该的大小),我有什么选择来绘制阴影?它也是一个自定义形状。

最简单的方法是将其添加到CALayer:

#include <QuartzCore/QuartzCore.h>

// iOS 4.0 or later
[self.layer setShadowColor:[[UIColor blackColor] CGColor]];
[self.layer setShadowOffset:CGSizeMake(1.0, 1.0)];
[self.layer setShadowOpacity:0.5];
[self.layer setShadowRadius:1.f];
#包括
//iOS 4.0或更高版本
[self.layer setShadowColor:[[UIColor blackColor]CGColor]];
[self.layer setShadowOffset:CGSizeMake(1.0,1.0)];
[self.layer setShadowOpacity:0.5];
[self.layer setShadowRadius:1.f];

如果这对您不起作用,请告诉我,我将发布一些代码CG代码。

假设我的问题正确,您正在寻找停止剪辑阴影的方法。这很容易实现,假设您有阴影视图所在的视图层次结构,只需在阴影视图的超级视图上关闭
clipstobunds
(如果需要,在超级视图的超级视图上关闭)


但是要小心,因为可能有其他东西你的视图被剪切了,你不想被看到(虽然通常这不应该是一个问题)。

我不相信这是对眼前问题的回答-问题是关于阴影的剪切,而不是创建阴影。层阴影仍将被父视图剪裁(假设阴影层有一个按钮大小的superview)。仅供记录:有一次,我编写了完全相同的代码,以获得UITextField上文本的dropShadow效果,该UITextField位于半透明的UIToolbar上,部分与UITextView重叠。从视觉上看,放置阴影很好,但UITextView中的滚动/拖动速度明显减慢。大约50-60fps变为30-40fps,只是因为阴影。最好使用CoreGraphics:)