扫描二维码- 描绘边框

是指将扫描到的二维码,通过绘图技术增加边框,显示出来更容易让用户识别,增加用户体验

扫描二维码- 描绘边框代码实现

// 绘制二维码边框
    func drawQRCodeFrame(qrCodeObj: AVMetadataMachineReadableCodeObject) -> () {

        // 1. 创建形状图层
        let shapLayer = CAShapeLayer()
        shapLayer.fillColor = UIColor.clearColor().CGColor
        shapLayer.strokeColor = UIColor.redColor().CGColor
        shapLayer.lineWidth = 6

        // 2.1 给layer, 设置一个形状路径, 让layer来展示
        let corners = qrCodeObj.corners

        // 2.2 拼接路径
        let path = UIBezierPath()

        // 2.3 定义变量
        var index = 0
        var point = CGPointZero

        // 2.4 遍历corners
        // 根据四个角对应的坐标, 转换成为一个path
        for corner in corners {

            // 2.5 转换
            CGPointMakeWithDictionaryRepresentation(corner as! CFDictionary, &point)

            // 2.6 拼接路线
            if index == 0 {
                // 如果第一个点, 移动路径过去, 当做起点
                path.moveToPoint(point)
            }else {
                // 如果不是第一个点, 添加一个线到这个点
                path.addLineToPoint(point)
            }
            index += 1
        }

        // 2.7 关闭路径
        path.closePath()

        // 2.8 给layer 的path 进行赋值
        shapLayer.path = path.CGPath

        // 3. 添加形状图层, 到需要展示的图层上面
        layer.addSublayer(shapLayer)
    }

    // 移除二维码边框
    func removeQRCodeFrame() -> () {
        // 1. 获取子图层数组
        guard let subLayers = layer.sublayers else {
            return
        }

        // 2. 遍历图层
        for subLayer in subLayers {
            // 3.将添加的边框图层移除
            if subLayer.isKindOfClass(CAShapeLayer) {
                subLayer.removeFromSuperlayer()
            }
        }
    }

你可能感兴趣的:(扫描二维码- 描绘边框)