美文网首页
Swift 镂空遮罩层的实现

Swift 镂空遮罩层的实现

作者: JaiUnChat | 来源:发表于2017-03-24 13:23 被阅读391次

    本篇所实现的是拍照时候中间一个框,边上都是半透明黑色的效果。

    关键

        let maskLayer = CAShapeLayer()
        maskLayer.fillRule = kCAFillRuleEvenOdd //奇偶层数显示规则
    

    如果叠加的层是偶数个,则不显示叠加部分。如果是奇数个,则显示该区域内部。
    所以在底层上面再叠一层L,L所覆盖的区域就会镂空。

    步骤

    1.创建一个镂空路径
    2.创建CAShapeLayer 将镂空赋值给shapeLayer
    3.将shapeLayer 设置为背景视图的Mask

    代码

        // 不能直接加在最底层viewController.view上面,会黑掉 后面没东西显示了
        let backgroundView = UIView(frame: view.bounds)
        backgroundView.backgroundColor =  UIColor.init(red: 0, green: 0, blue: 0, alpha: 0.6)
        view.addSubview(backgroundView)
    
        let maskLayer = CAShapeLayer()
        maskLayer.fillRule = kCAFillRuleEvenOdd //  奇偶层显示规则
        
        let basicPath = UIBezierPath(rect: view.frame) // 底层
    
        let maskPath = UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: 35, height: 35)) 
        let maskPath = UIBezierPath(rect: aShape.frame) //自定义的遮罩图形
        basicPath.append(maskPath) // 重叠
        
        maskLayer.path = basicPath.cgPath
        backgroundView.layer.mask = maskLayer

    相关文章

      网友评论

          本文标题:Swift 镂空遮罩层的实现

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