最近在项目中遇到要给一个圆形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
却是指视图的图层上的子图层,如果超出父图层的部分就截取掉
最后附上效果图