Christian
Christian

Reputation: 1027

How can I draw a shadow beyond a UIView's bounds?

I'm using the method described at How do I draw a shadow under a UIView? to draw shadow behind a view's content. The shadow is clipped to the view's bounds, although I disabled "Clip Subviews" in Interface Builder for the view. Is it possible to draw a shadow around a view and not only in a view?

I don't want to draw the shadow inside the view because the view would receive touch events for the shadow area, which really belongs to the background.

Upvotes: 1

Views: 4469

Answers (3)

Joubert Nel
Joubert Nel

Reputation: 3214

Instead of manual drawing in drawRect, consider setting properties on the the UIView's Core Animation layer for drawing a shadow.

For example:

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

For this to work, you need to include QuartzCore:

#import <QuartzCore/QuartzCore.h>

Upvotes: 6

Quentin
Quentin

Reputation: 1781

It is not encouraged to draw outside view bounds. Maybe you can include the shadow directly in your background...

Regards,

Upvotes: 0

deanWombourne
deanWombourne

Reputation: 38485

clipsToBounds only controls the clipping for children of a view, not drawing of that view itself; hence it's not solving your problem.

If you can draw your shadow onto a different view and add that as a child, it won't get clipped. However, I don't know how possible that is with the method you're using :(

Upvotes: 2

Related Questions