由于设置阴影需要masksToBounds设置为NO,而设置圆角需要masksToBounds为YES,因此相互矛盾,不能用一般法解决。
设原来要显示的view为exhibitView
1.需要将当前要展示的UIView加在一个新的UIView,暂且叫做shadowView,将其设置阴影
初始化
- (UIView *)shadowView{
if (_shadowViewForHeadPicture == nil) {
//shadowView
_shadowView = [[UIView alloc]init];
//不设置frame的话,不能子视图的点击事件,但也可以正常显示视图,另外设置的frame一定要将子视图包含在内
_shadowView = CGRectMake(0, 0, WIDTH, HEIGHT/2);
_shadowView = [UIColor colorWithRed:203.0/255 green:231.0/255 blue:247.0/255 alpha:1].CGColor;
_shadowView.layer.masksToBounds= NO;//默认是NO
_shadowView.layer.shadowOffset = CGSizeMake(0, 5);
_shadowView.layer.shadowRadius = 20 ;
_shadowView.layer.shadowOpacity = 1;
_shadowView.layer.shouldRasterize = YES;
}
return _shadowView;
}
将它加在父视图上
[self addSubview:self.shadowView];
然后再用这个_shadowView添加本来要显示的视图
[self.shadowView addSubview:exhibitView];
2.在要展示的exhibitView再设置圆角,并让
exhibitView.layer.masksToBounds= YES;
效果可参考下图白色的圆形View