我怎样才能在UIView的界限之外画出阴影?

时间:2010-05-12 08:57:19

标签: iphone cocoa-touch quartz-graphics

我正在使用How do I draw a shadow under a UIView?中描述的方法在视图内容后面绘制阴影。虽然我在Interface Builder中为视图禁用了“剪辑子视图”,但阴影被剪切到视图的边界。是否可以在视图周围绘制阴影,而不仅仅是视图中?

我不想在视图中绘制阴影,因为视图会接收阴影区域的触摸事件,它实际上属于背景。

3 个答案:

答案 0 :(得分:6)

不要在drawRect中手动绘图,而应考虑在UIView的核心动画层上设置属性以绘制阴影。

例如:

[descriptionInput setClipsToBounds:NO];
[descriptionInput.layer setShadowColor:[[UIColor blackColor] CGColor]];
[descriptionInput.layer setShadowOpacity:0.8];
[descriptionInput.layer setShadowOffset:CGSizeMake(0.0, 3.0)];

为此,您需要包含QuartzCore:

#import <QuartzCore/QuartzCore.h>

答案 1 :(得分:2)

clipsToBounds仅控制视图子项的裁剪,而不是绘制该视图本身;因此它无法解决你的问题。

如果您可以将阴影绘制到不同的视图上并将其添加为子视图,则不会剪切它。但是,我不知道你使用的方法有多可能:(

答案 2 :(得分:0)

不鼓励绘制外部视图边界。也许你可以直接在你的背景中包含阴影......

此致