利用layer的mask属性实现APP半透明引导蒙层

如今APP中新版本都会有些半透明蒙层引导,例如下面这种的。

屏幕快照 2017-07-07 上午11.32.51.png

之前我都是用一张图片覆盖到相应的位置来完成需求,还要考虑不同屏幕的图片拉伸,而且图片上的内容固定,很不灵活。后来采用layer的mask属性来让需要显示的地方透明,完美的实现这些需求。

  • mask属性按照我的理解就是显示maskLayer与父layer非透明部分的交集,所以中间的没有path的透明部分就不显示了。

  • 代码实现,self就是占整个屏幕的黑色蒙层,这里的bezierPathByReversingPath可以生成反向的path,frame是需要透明显示的位置

UIBezierPath *path = [UIBezierPath bezierPathWithRect:kScreen_BOUNDS];
[path appendPath: [[UIBezierPath bezierPathWithRoundedRect:frame cornerRadius:4] bezierPathByReversingPath]];
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.path = path.CGPath;
self.layer.mask = shapeLayer;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载:http://www.jianshu.com/p/32fcadd12108 每个UIView有一个伙伴称为l...
    F麦子阅读 6,307评论 0 13
  • 每个UIView有一个伙伴称为layer,一个CALayer。UIView实际上并没有把自己画到屏幕上;它绘制本身...
    shenzhenboy阅读 3,155评论 0 17
  • Core Animation其实是一个令人误解的命名。你可能认为它只是用来做动画的,但实际上它是从一个叫做Laye...
    小猫仔阅读 3,802评论 1 4
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,566评论 6 30
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,141评论 5 13