Drop a shadow to right and bottom of uiview

71,190

Solution 1

Try the following code, it might help you

    myView.layer.shadowColor = [UIColor purpleColor].CGColor;
    myView.layer.shadowOffset = CGSizeMake(5, 5);
    myView.layer.shadowOpacity = 1;
    myView.layer.shadowRadius = 1.0;
    myView.layer.maskToBounds = NO;

I tested this code and it's working and output is:

enter image description here

Solution 2

Hi I have used below code ,it will provide you with shadow you want.

 UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:_viewShadow.bounds];
_viewShadow.layer.masksToBounds = NO;
_viewShadow.layer.shadowColor = [UIColor blackColor].CGColor;
_viewShadow.layer.shadowOffset = CGSizeMake(10.0f, 5.0f);  /*Change value of X n Y as per your need of shadow to appear to like right bottom or left bottom or so on*/
_viewShadow.layer.shadowOpacity = 0.5f;
_viewShadow.layer.shadowPath = shadowPath.CGPath;

Also masksToBounds is imp as it disables the clipping of sublayers that extend further than the view's bounds. If you put it YES then you won't see shadow as it clips sublayer where else in NO it allow to extent layer.

Solution 3

In Swift 3, CGSizeMake no longer exists. It has been changed to CGSize(width: 20, height: 10). So the shadowOffset can be set like this in Swift 3:

myView.layer.shadowOffset = CGSize(width: 20, height: 10)

Solution 4

I found out that these values give a nice result :

myView.layer.shadowColor = UIColor.black.cgColor
myView.layer.shadowOpacity = 0.25
myView.layer.shadowRadius = 3
myView.layer.shadowOffset = CGSize(width: 1, height: 1) // shadow on the bottom right

enter image description here

Share:
71,190
Honey
Author by

Honey

Updated on February 15, 2020

Comments

  • Honey
    Honey over 4 years

    I have to drop a shadow to the right and bottom of uiview.Im doing this in interface builder.But I see the shadow dropped to top of it.Tried differnt sizes.but couldn't get it.

    layer.masksToBound=No
    layer.shadowOpacity=0.15
    layer.shadowRadius=2
    layer.shadowOffSet={10,-10}   //Values being set in Interfacebuilder.
    

    Still this drops shadow at top.What should I do to get at bottom of view.

  • Gaurav Singh
    Gaurav Singh about 10 years
    Use code to create shadows. check this link
  • Balaji Kondalrayal
    Balaji Kondalrayal over 9 years
    Can u tell me how to add shadow only in bttom of the view.
  • Anton Gregersen
    Anton Gregersen about 9 years
    Instead of myView.layer.shadowOffset = CGSizeMake(5, 5); do myView.layer.shadowOffset = CGSizeMake(0, 5);
  • ios developer
    ios developer almost 8 years
    inimageview i can't add this shadow. i have coded like as you write.
  • user3306145
    user3306145 almost 8 years
    @GauravSingh i used this to draw shadow for tableview cell but after scrolling up it goes to top.
  • Mahmud Ahmad
    Mahmud Ahmad almost 8 years
    Hey, I tried setting my cgsizemake(0,n), but i keep getting a shadow on the right side of the view... any idea why that is?
  • iOS Monster
    iOS Monster about 7 years
    Thanks for your note on 'masksToBounds', I was missing this one.