这个属性在iOS8之后开始使用,用来表示视图的遮罩。
3123.png
官方定义*An optional view whose alpha channel is used to mask a view’s content.
(一个通过alpha通道来掩盖一个view的内容的可选view。)
注意:
可以这样理解,是将maskView每个point的alpha赋值给View的重叠部分相对应的point,这样view的重叠每个point都有个alpha值了,view重叠部分就可能显示多种透明色。
我gitHub上上传的dome效果图如下,做一下思路说明,供有需要的兄弟参考一下:
效果.png
这个效果的实现关键点在于 动画执行时间的延迟设置,这个时间的计算和设置,直接决定效果能否缓缓出来,因为代码的执行速度是很快的,而动画又是移步执行的,如果设置动画的执行时间为0,你会看到图片瞬间改变,出不了想要的效果。
效果1.png
途中圆圈羽化的边缘是用的图片填充,对CALayer内容的图片填充才有的羽化边缘的形状,才出的这样的效果,这其实是 maskLayer的使用了,具体可以参考我的代码查看。喜欢的话,请star一下。
可以结合CAGradientLayer用来实现颜色滚动渐变
效果如下:
滑动.gif
此处只做思路的介绍,查看具体源码可以参看这篇文章: http://www.jianshu.com/p/f0c198e8de91
当然也可以结合CAShapeLayer用来实现自己想要的任意效果,layer的mask是种位掩蔽,在shapeLayer的填充区域中,alpha值不为零的部分,self会被绘制;alpha值为零的部分,self不会被绘制
可以把任何UIView切成任意形状的代码:
- (void)dwMakeForEveryView
{
CGSize size = self.frame.size;
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
[shapeLayer setFillColor:[[UIColor whiteColor] CGColor]];
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, size.width - radius, size.height);
CGPathAddArc(path, NULL, size.width-radius, size.height-radius, radius,)
..............
.............
CGPathCloseSubpath(path);
[shapeLayer setPath:path];
CFRelease(path);
self.layer.mask = shapeLayer;//layer的mask,顾名思义,
}
视图初始化的时候调用即可
- (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
[self dwMakeBottomRoundCornerWithRadius:3.0];
}
return self;
}
本文考虑到简洁就不上代码了,大体都是思路介绍,具体的代码实现的效果可以到我GitHub去下载查看,喜欢的话,请star 一下,谢谢。