UIView with rounded corners and drop shadow?

前端 未结 30 2981
一整个雨季
一整个雨季 2020-11-22 08:00

I’ve been working on an application for a couple of years and received a simple design request: Round the corners on a UIView and add a drop shadow.To do as given below.

30条回答
  •  春和景丽
    2020-11-22 08:24

    Old thread still current...

    I've edited Daniel Gindi's method to make it possible to use it with buttons etc. as well. If anyone needs rounded corners or wants to combine round corners and a border it has to be set on the view's layer which is passed to this method. I've also set the rasterization to speed it up a little.

    + (UIView*)putView:(UIView*)view insideShadowWithColor:(CGColorRef)color 
                                     andRadius:(CGFloat)shadowRadius 
                                     andOffset:(CGSize)shadowOffset 
                                     andOpacity:(CGFloat)shadowOpacity
    {
        // Must have same position like "view"
        UIView *shadow = [[UIView alloc] initWithFrame:view.frame]; 
    
        shadow.layer.contentsScale = [UIScreen mainScreen].scale;
        shadow.userInteractionEnabled = YES; // Modify this if needed
        shadow.layer.shadowColor = color;
        shadow.layer.shadowOffset = shadowOffset;
        shadow.layer.shadowRadius = shadowRadius;
        shadow.layer.masksToBounds = NO;
        shadow.clipsToBounds = NO;
        shadow.layer.shadowOpacity = shadowOpacity;
        shadow.layer.rasterizationScale = [UIScreen mainScreen].scale;
        shadow.layer.shouldRasterize = YES;
    
        [view.superview insertSubview:shadow belowSubview:view];
        [shadow addSubview:view];
    
        // Move view to the top left corner inside the shadowview 
        // ---> Buttons etc are working again :)
        view.frame = CGRectMake(0, 0, view.frame.size.width, view.frame.size.height);
    
        return shadow;
    }
    

提交回复
热议问题