diff --git a/Source/LBXScanWrapper.swift b/Source/LBXScanWrapper.swift index 126441c..ff2387a 100755 --- a/Source/LBXScanWrapper.swift +++ b/Source/LBXScanWrapper.swift @@ -280,6 +280,17 @@ open class LBXScanWrapper: NSObject,AVCaptureMetadataOutputObjectsDelegate { setTorch(torch: torch) } + ///调整焦距 + open func adjustFocal(value:CGFloat){ + let videoConnection:AVCaptureConnection = (self.stillImageOutput.connection(with: .video))! + self.previewLayer?.setAffineTransform(CGAffineTransform(scaleX: 1+value, y: 1+value)) + do { + try self.input?.device.lockForConfiguration() + } catch {} + videoConnection.videoScaleAndCropFactor = 1+value + self.input?.device.unlockForConfiguration() + } + //MARK: ------获取系统默认支持的码的类型 static func defaultMetaDataObjectTypes() -> [AVMetadataObject.ObjectType] { var types = diff --git a/swiftScan/QQScanViewController.swift b/swiftScan/QQScanViewController.swift index 777c363..05379dc 100644 --- a/swiftScan/QQScanViewController.swift +++ b/swiftScan/QQScanViewController.swift @@ -19,6 +19,11 @@ class QQScanViewController: LBXScanViewController { @brief 闪关灯开启状态 */ var isOpenedFlash: Bool = false + + /** + @brief 缩放倍数 + */ + var scale:CGFloat = 0 // MARK: - 底部几个功能:开启闪光灯、相册、我的二维码 @@ -114,6 +119,10 @@ class QQScanViewController: LBXScanViewController { bottomItemsView?.addSubview(btnMyQR) view.addSubview(bottomItemsView!) + + //此处通过手势调整 + let pinchGest:UIPinchGestureRecognizer = UIPinchGestureRecognizer.init(target: self, action: #selector(handlePinches(pinchGest:))) + self.view.addGestureRecognizer(pinchGest) } //开关闪光灯 @@ -137,5 +146,22 @@ class QQScanViewController: LBXScanViewController { let vc = MyCodeViewController() self.navigationController?.pushViewController(vc, animated: true) } + + @objc func handlePinches(pinchGest:UIPinchGestureRecognizer){ + + var currentScale:CGFloat = self.scale + pinchGest.scale - 1.0; + if (currentScale > 2) { + currentScale = 2; + } + if (currentScale < 0) { + currentScale = 0; + } + //调整焦距缩放倍数 + scanObj?.adjustFocal(value: currentScale) + + if pinchGest.state == .ended || pinchGest.state == .cancelled{ + self.scale = currentScale + } + } }