Why masksToBounds = YES prevents CALayer shadow

Why masksToBounds = YES prevents CALayer shadow?

layer.masksToBounds 和layer.shadowOffset同时对一个View使用会使得shadow出不来.

 

 

 I'm adding a drop shadow effect to one my UIView. Which works pretty well. But as soon as I set the view's masksToBounds property to YES. The drop shadow effect isn't rendered any more.

 

Because shadow is an effect done outside the View, and that masksToBounds set to YES will tell the UIView not to draw everything that is outside itself.

If you want a roundedCorner view with shadow I suggest you do it with 2 views...

UIView view1 = [[UIView alloc] init];
UIView view2 = [[UIView alloc] init];

view1.layer.cornerRadius = 5.0;
view1.layer.masksToBounds = YES;
view2.layer.cornerRadius = 5.0;
view2.layer.shadowColor = [[UIColor blackColor] CGColor];
view2.layer.shadowOpacity = 1.0;
view2.layer.shadowRadius = 10.0;
view2.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
[view2 addSubview:view1];

[view1 release];

 

原文地址:http://*.com/questions/3690972/why-maskstobounds-yes-prevents-calayer-shadow