大家都知道,一旦把控件的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設置了陰影,即可達到我們需要的效果~