iOS中layer之mask 详解

话不多说,划重点。

/************************************从这里开始****************************************/

1.mask 是CALayer的一个属性,同时也是CALayer 类型的。

2.原理:控制layer本身渲染的一个layer。效果是:比如imageLayer有一个maskLayer作为mask(注意maskLayer可以不跟imageLayer大小一样),那maskLayer透明的地方,imageLayer就不会渲染,而是变透明,显示出imageLayer之后的内容,maskLayer不透明的地方,imageLayer就会正常渲染,显示出imageLayer本来的内容如果maskLayer比imageLayer要小,那默认的maskLayer之外的地方都是透明的,都不会渲染。 

3.mask 的作用就是让父图层部分区域可见。

4.mask 的backgroundColor必须设置,不设置mask 背景就是透明的,mask 是不会起作用的,但是backgroundColor设置什么颜色无所谓。

5.为一个layer的mask 创建一个新的mask时,这个新的mask不能有superlayer 和sublayer。(官方文档的说明)

6.mask 可以配合CAGradientLayer、CAShapeLayer 使用。可以实现蒙层透明度、显示不同形状图层、图案镂空、文字变色等等功能。

7.mask在动画中使用,可以产生很好的动画效果。

/*************************************在这里结束***********************************/

iOS中layer之mask 详解_第1张图片
mask属性官方解释

I、下面就展示一下mask 最基本的用法:


mask遮罩效果图

核心代码部分如下:

iOS中layer之mask 详解_第2张图片
mask遮罩效果代码图

II、下面展示的是和CAShapeLayer结合使用的情况

- (UIView*)shapeView

{

    if(_shapeView==nil) {

        _shapeView = [[UIView alloc] initWithFrame:CGRectMake(50, 200, UIScreen.mainScreen.bounds.size.width - 50*2, 200)];

        _shapeView.backgroundColor = UIColor.grayColor;

        CAShapeLayer *shapeLayer = [CAShapeLayer layer];

        UIBezierPath *bezierPath = [UIBezierPath bezierPathWithOvalInRect:_shapeView.bounds];

        shapeLayer.path= bezierPath.CGPath;

        shapeLayer.strokeStart=0.0;

        shapeLayer.strokeEnd=1.0;

        shapeLayer.fillColor = UIColor.orangeColor.CGColor;

        shapeLayer.lineWidth=1.5;

        [_shapeView.layeraddSublayer:shapeLayer];

     //   _shapeView.layer.mask= shapeLayer;     >>>>>>>>>>>>>>>>>>>>>AAA行

    }

    return _shapeView;

}

上面这段代码就是mask 和 CAShapeLayer 结合使用的简单示例:

上面代码AAA行注释掉的情况

iOS中layer之mask 详解_第3张图片
shapeLayer 没有赋值给mask情况

上面代码AAA没有注释掉的情况:


iOS中layer之mask 详解_第4张图片
mask被赋值了shapeLayer的情况

通过这两张图对比可以看出mask 和shapeLayer结合使用,可以在父图层上显示你想要的图形,而父图层的其它部分,则被隐去了。

III、扩展

使用layer的mask属性实现注水动画效果


iOS中layer之mask 详解_第5张图片
图片来之网络


mask和shapeLayer 结合 实现的圆形动画加载

iOS中layer之mask 详解_第6张图片
图片来之网络

你可能感兴趣的:(iOS中layer之mask 详解)