【iOS开发笔记】抠出部分区域透明的引导视图
2023-08-10 本文已影响0人
Mr_Ten
1、需求介绍
app首次安装时的新功能指引功能。
2、实现原理
- 将屏幕滚动到要指引的位置后,屏幕大部分区域添加遮罩蒙版。
- 获得要突出显示的部分坐标计算出。
- 在蒙版中将该坐标(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;
}