美文网首页iOS开发iOS开发技术分享iOS学习笔记
利用layer的mask属性实现APP半透明引导蒙层

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

作者: returnzyf | 来源:发表于2017-07-07 11:56 被阅读345次

    如今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;

    相关文章

      网友评论

      • Zz7777777:麻烦在github 放上demo吧
      • 小星星吃KFC:self.layer.mask = shapeLayer;用这个不行,[self.layer addSublayer:shapeLayer];用这个才行 是吗?
        returnzyf:@逝去橡皮的铅笔 设置mask就行了,自己实践
      • 3272e773cabf:嗯、是的

      本文标题:利用layer的mask属性实现APP半透明引导蒙层

      本文链接:https://www.haomeiwen.com/subject/vzelhxtx.html