【IOS】OC中UIView同时添加阴影和圆角

圆角中的masksToBounds=YES和阴影中的clipsToBounds=NO存在冲突,所以圆角与阴影不能共存,现在使用一个单独的UIView在下层做为阴影,上层原来的UIView设置圆角。

扩展类
UIView+Shadow.h

@interface UIView (Shadow)

-(UIView *)flipShadow;
-(UIView *)flipShadow:(int)radius;

@end

UIView+Shadow.m

#import "UIView+Shadow.h"

@implementation UIView (Shadow)

-(UIView *)flipShadow{
    return [self flipShadow:0];
}

-(UIView *)flipShadow:(int)radius{
    UIView *view = [[UIView alloc]initWithFrame:self.frame];
    view.backgroundColor = UIColor.whiteColor;
    view.layer.backgroundColor = UIColor.whiteColor.CGColor;//需要有颜色才有阴影
    view.layer.shadowOffset = CGSizeMake(0, 2);
    view.layer.shadowColor = [UIColor colorWithRed:0.7 green:0.7 blue:0.7 alpha:1.000].CGColor;
    view.layer.shadowOpacity = 0.2;
    if (radius > 0) {
        self.layer.cornerRadius = radius;
        self.layer.masksToBounds = YES;
        view.layer.cornerRadius = radius;
    }
    self.frame = self.bounds;
    [view addSubview:self];
    return view;
}
@end

如何使用:

UIView *view = [[UIView alloc]initWithFrame:frame];

UIView *view1 = [view flipShadow];
UIView *view2 = [view flipShadow:5];

[self addSubview:view1];
[self addSubview:view2];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值