iOS 遮罩(mask)效果

如果把视图裁剪圆形,我们通常会使用给一个视图加圆角的方法。

view.layer.masksToBounds = YES;
view.layer.cornerRadius = view.frame.size.width/2;

但如果需求是裁剪某一部分,如图所示

iOS 遮罩(mask)效果_第1张图片

裁剪成如下的样子:

iOS 遮罩(mask)效果_第2张图片

这样,上面的方法就不奏效了。

这个时候使用layer的mask的属性,能够简单的解决这个问题。
代码如下:

创建maskView

    maskView = [[UIView alloc]init];
    maskView.backgroundColor = [UIColor clearColor];
    maskView.frame = CGRectMake(0, 0, 275, 155);
    [imageView addSubview:maskView];

创建 circleLayer

   CAShapeLayer *circleLayer = [CAShapeLayer layer];
    CGPoint fCirclrCenter = CGPointMake(maskView.center.x+15, maskView.center.y);
    circleLayer.path = ([UIBezierPath bezierPathWithArcCenter:fCirclrCenter radius:70 startAngle:0 endAngle:2*M_PI clockwise:YES]).CGPath;


    [maskView.layer addSublayer:circleLayer];

    maskView.superview.layer.mask = circleLayer;

巧妙的使用mask还可以实现更多效果。以后慢慢探索。

你可能感兴趣的:(iOS)