iosmask_【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项目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值