大家都知道,一旦把控件的masksToBounds属性设置为YES,那么控件的多余部分将被裁减。那如果我们需要在控件masksToBounds属性为YES的基础上添加阴影该怎么办呢?
我想到的方法是,为该控件添加一层CALayer。代码如下
- (void)setMidBaseView:(UIView *)midBaseView{
midBaseView.layer.cornerRadius = 5.0f;
midBaseView.layer.masksToBounds = YES;
CALayer *subLayer = [CALayer layer];
subLayer.frame = midBaseView.frame
subLayer.cornerRadius = 5.0f;
subLayer.backgroundColor = [UIColor clearColor].CGColor;
subLayer.masksToBounds = NO;
//todo 设置阴影
[self.layer insertSublayer:subLayer below:midBaseView.layer];
_midBaseView = midBaseView;
}
可以看到,我先为midBaseView添加了圆角,因此,midBaseView的maskToBounds属性已被设置成了YES,然后我为midBaseView添加了一层subLayer,并为此layer设置了阴影,即可达到我们需要的效果~