How can I add shadow to a circle UIImageView or UIView?

前端 未结 6 2043
迷失自我
迷失自我 2020-12-25 13:31

I am trying to make a circle UIImageView, and it works. Below is the way I use to make it:

[self.pic.layer setMasksToBounds:YES];
[self.pic.laye         


        
6条回答
  •  旧时难觅i
    2020-12-25 13:58

    Use the CALayer's shadowPath property and add a UIBezierPath with rounded rect

    self.pic.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:self.pic.frame cornerRadius:50.0].CGPath;
    

    EDIT

    For a square-ish image view this technique does not work directly because, as you said, the image view goes back to square. Reason: You set clipsToBounds = NO to show the shadow which removes the clipping for corner radius, where imageView is subview of container.

    Workaround:
    Add your imageview in a container view and then apply the layer shadow to this container. Following is the code I tried.

    [self.imageView.layer setCornerRadius:60.0];
    [self.imageView.layer setMasksToBounds:YES];
    self.imageView.clipsToBounds = YES;
    
    self.container.backgroundColor = [UIColor clearColor];
    self.container.layer.shadowColor = [UIColor blackColor].CGColor;
    self.container.layer.shadowOffset = CGSizeMake(5,15);
    self.container.layer.shadowOpacity = 0.5;
    self.container.layer.shadowRadius = 2.0;
    self.container.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:self.container.bounds cornerRadius:100.0].CGPath;
    

    The resultant effect is as shown in the screenshot,

    enter image description here

    Hope that helps!

提交回复
热议问题