QRcode로 앱을 만들고 있는데 바코드 스캐너를 사용하는 이전 코드가 있습니다. QRcode 스캐너로도 수정할 수 있습니까?바코드 스캐너를 QRcode 스캐너로 사용할 수 있습니까?
감사
QRcode로 앱을 만들고 있는데 바코드 스캐너를 사용하는 이전 코드가 있습니다. QRcode 스캐너로도 수정할 수 있습니까?바코드 스캐너를 QRcode 스캐너로 사용할 수 있습니까?
감사
CIdetector type: CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}];
변경 CIDetectorTypeQRCode에 CIdetector 유형입니다.
감사! 이것이 내가 필요한 것입니다. –
이것과 별개로 다른 방법이 있습니까? –
좋아요 CIDetector를 사용하지 않으시겠습니까? –
는
let supportedCodeTypes = [AVMetadataObjectTypeUPCECode,
AVMetadataObjectTypeCode39Code,
AVMetadataObjectTypeCode39Mod43Code,
AVMetadataObjectTypeCode93Code,
AVMetadataObjectTypeCode128Code,
AVMetadataObjectTypeEAN8Code,
AVMetadataObjectTypeEAN13Code,
AVMetadataObjectTypeAztecCode,
AVMetadataObjectTypePDF417Code,
AVMetadataObjectTypeQRCode]
은 다음 viewWillAppear
에
func startVideoCapture(){
// Get an instance of the AVCaptureDevice class to initialize a device object and provide the video as the media type parameter.
let captureDevice = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo)
do {
// Get an instance of the AVCaptureDeviceInput class using the previous device object.
let input = try AVCaptureDeviceInput(device: captureDevice)
// Initialize the captureSession object.
captureSession = AVCaptureSession()
// Set the input device on the capture session.
captureSession?.addInput(input)
// Initialize a AVCaptureMetadataOutput object and set it as the output device to the capture session.
let captureMetadataOutput = AVCaptureMetadataOutput()
captureSession?.addOutput(captureMetadataOutput)
// Set delegate and use the default dispatch queue to execute the call back
captureMetadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
captureMetadataOutput.metadataObjectTypes = supportedCodeTypes
// Initialize the video preview layer and add it as a sublayer to the viewPreview view's layer.
videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
videoPreviewLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill
videoPreviewLayer?.frame = self.qrCodeView.bounds
self.qrCodeView.layer.addSublayer(videoPreviewLayer!)
self.qrCodeView.clipsToBounds = true
// Start video capture.
captureSession?.startRunning()
qrCodeFrameView = UIView()
// if let qrCodeFrameView = qrCodeFrameView {
// qrCodeFrameView.layer.borderColor = UIColor.green.cgColor
// qrCodeFrameView.layer.borderWidth = 2
// self.qrCodeView.addSubview(qrCodeFrameView)
// self.qrCodeView.bringSubview(toFront: qrCodeFrameView)
// }
} catch {
// If any error occurs, simply print it out and don't continue any more.
print(error)
return
}
}
다음의 ViewController에이 기능을 추가 바코드를 스캔하고 당신이 당신의 뷰 컨트롤러에이 추가 코드 아래
을 사용할 수 있습니다 QRCODE하려면
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
self.startVideoCapture()
}
전화를 걸기 전에 카메라 사용 권한을 확인하는 것을 잊지 마십시오. startVideoCapture
도움을 주셔서 감사합니다. –
당신은 환영합니다 –
예, 그렇게 할 수 있습니다. CIDetector * detector = [CIDetector detectorOfType : CIDetectorTypeQRCode 컨텍스트 : 없음 옵션 : @ {CIDetectorAccuracy : CIDetectorAccuracyHigh}]; – Shekhu
현재 사용중인 바코드 스캐너에 대한 자세한 내용을 제공해야합니다. iOS의 여러 구현을 비롯하여 외부 라이브러리로 더 많이 포함됩니다. – jcaron
Apple에서 제공 한 기본 감지기 코드를 사용하고 있습니다. –