【iOS开发笔记】抠出部分区域透明的引导视图

2023-08-10  本文已影响0人  Mr_Ten

1、需求介绍

app首次安装时的新功能指引功能。

2、实现原理

  1. 将屏幕滚动到要指引的位置后,屏幕大部分区域添加遮罩蒙版。
  2. 获得要突出显示的部分坐标计算出。
  3. 在蒙版中将该坐标(CGRect)对应的区域通过贝塞尔曲线抠图设置为透明,达到对应突出显示效果。

3、透明区域代码实现

/**
抠出要展示的透明区域
- Parameter : transparencyRect 要突出显示的坐标
*/
    private func updateTransparencyAction(transparencyRect:CGRect) {
        //透明区域
        let transparencyPath = UIBezierPath.init(roundedRect: transparencyRect, byRoundingCorners: .allCorners, cornerRadii: .init(width: 8, height: 8));
        //全体区域
        let mainPath = UIBezierPath.init(rect: DeviceFrame);
        mainPath.append(transparencyPath);
        mainPath.usesEvenOddFillRule = true;
        
        //图层设置
        let shapeLayer = CAShapeLayer.init();
        shapeLayer.path = mainPath.cgPath;
        shapeLayer.fillColor = EHIColor.hexColor_000000.cgColor;//颜色只要不是透明即可
        shapeLayer.fillRule = kCAFillRuleEvenOdd;
        
        self.layer.mask = shapeLayer;
    }
上一篇下一篇

猜你喜欢

热点阅读