当设置视图的阴影和设置圆角冲突的时候,就可以放大招了,使用下面的方法进行随意设置4个方向的圆角。
比如说:遇到下面的情况,图片要上面圆角,下面直角,外面的容器还要设置阴影。
解决思路:在父视图容器上设置圆角,设置阴影,直接把图片放在容器里。设置裁剪子视图超出部分。
问题:当裁剪子视图遇到阴影的时候,不能同时兼顾
// 设置阴影的时候
view.masksToBounds = NO;
// 设置裁剪子视图
view.masksToBounds = YES;
会出现冲突。
解决方法:在外面的容器视图上设置阴影,不设置裁剪,直接设置图片的上面2个角为圆角,下面的2个角为直角。
代码:
CGSize radii = CGSizeMake(5, 5);
// 随意改变4个圆角
UIRectCorner corners = UIRectCornerTopLeft | UIRectCornerTopRight;
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.spreadImageV.bounds byRoundingCorners:corners cornerRadii:radii];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.bounds;
maskLayer.path = path.CGPath;
maskLayer.masksToBounds = NO;
self.spreadImageV.layer.mask = maskLayer;