您的当前位置:首页iOS 给一个设置过圆角的View添加阴影效果

iOS 给一个设置过圆角的View添加阴影效果

2024-12-14 来源:哗拓教育

最近在项目中遇到要给一个圆形imgeView的底部增加一圈阴影,刚开始这样写是没有出现阴影效果的,下面附上代码:


_imgView.layer.cornerRadius = 75; //设置imageView的圆角

_imgView.layer.masksToBounds = YES;

_imgView.layer.shadowColor = [UIColor blackColor].CGColor;//设置阴影的颜色

_imgView.layer.shadowOpacity = 0.8;//设置阴影的透明度

_imgView.layer.shadowOffset = CGSizeMake(1, 1);//设置阴影的偏移量

_imgView.layer.shadowRadius = 3;//设置阴影的圆角

分析原因:因为代码中设置了masksToBounds属性为YES了,将后面设置的阴影效果给裁剪掉了,所以我们看不到阴影效果,如果我们将masksToBounds属性为NO了,这样就会失去圆角效果(尽管会出现阴影效果),所以需要向一个两全其美的办法来解决这个问题。

给imageView添加一个父视图,在父视图上添加阴影效果就好,这样就不会对imageView的圆角造成影响了。

UIView *shadowView = [[UIView alloc]initWithFrame:_imgView.frame];

[self.view addSubview:shadowView];

shadowView.layer.shadowColor = [UIColor blackColor].CGColor;

shadowView.layer.shadowOffset = CGSizeMake(5, 5);

shadowView.layer.shadowOpacity = 1;

shadowView.layer.shadowRadius = 9.0;

shadowView.layer.cornerRadius = 9.0;

shadowView.clipsToBounds = NO;

[shadowView addSubview:_imgView];

说明:

clipsToBounds

是指视图上的子视图,如果超出父视图的部分就截取掉,

masksToBounds

却是指视图的图层上的子图层,如果超出父图层的部分就截取掉

最后附上效果图

显示全文