【iOS开发】iOS中的Mask

CALayer拥有mask属性,Apple的官方解释如下:

An optional layer whose alpha channel is used to mask the layer’s content. The layer’s alpha channel determines how much of the layer’s content and background shows through. Fully or partially opaque pixels allow the underlying content to show through but fully transparent pixels block that content.

mask同样也是一个CALayer。假设将CALayer本身称为ContentLayer,将mask称为MaskLayer,蒙版(Masking)的工作原理是通过MaskLayer的alpha值定义ContentLayer的显示区域:对于ContentLayer上每一个Point,计算公式为ResultLayer = ContentLayer * MaskLayer_Alpha。所以当alpha为1时Content显示,alpha为0时Content不显示,其他处于0与1之间的值导致Content半透明。

需要注意的是:

MaskLayer的color不重要,主要使用opacity(CALayer中的alpha),但是注意[UIColor clearColor]其实就是alpha为0的color。
ContentLayer超出MaskLayer以外的部分不会被显示出来。
MaskLayer不能有superLayer,否则蒙版(Masking)的结果就是未知(Undefined)。
由于mask是一个CALayer,可以通过组合产生很多非常棒的效果。例如可以将MaskLayer指定为CAGradientLayer类型实现Gradient效果,可以给MaskLayer添加动画。

下面是自己的用Mask做的Splash Demo:Demo 里面 15-AnimatedSplash项目。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容