在 SwiftUI 中调用相机进行扫码(二维码、条形码等),可以通过使用 AVCaptureSession 和 AVCaptureMetadataOutput 实现。这可以通过 UIViewControllerRepresentable 来包装 AVCaptureSession,然后与 SwiftUI 结合。详见代码示例。
调用流程
- 创建一个使用 AVCaptureSession 来处理相机输入和元数据输出的视图。
- 使用 UIViewControllerRepresentable 包装该视图并将其集成到 SwiftUI 中。
- 处理扫描到的条形码或二维码,并将其结果传递回 SwiftUI。
组件代码
struct BarcodeScannerView: UIViewControllerRepresentable {
class Coordinator: NSObject, AVCaptureMetadataOutputObjectsDelegate {
var parent: BarcodeScannerView
var captureSession: AVCaptureSession?
init(parent: BarcodeScannerView, captureSession: AVCaptureSession?) {
self.parent = parent
self.captureSession = captureSession
}
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
if le
标签:扫码,BarcodeScannerView,UIViewControllerRepresentable,parent,captureSession,相机,Swi
From: https://blog.csdn.net/weixin_41863236/article/details/142730806