Why masksToBounds = YES prevents CALayer shadow?

后端 未结 6 1244
借酒劲吻你
借酒劲吻你 2020-11-28 01:44

With the following snippet, 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 prope

6条回答
  •  失恋的感觉
    2020-11-28 02:18

    Because shadow is an effect done outside the View, and that masksToBounds set to YES will tell the UIView not to draw anything 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];
    

提交回复
热议问题