我已经设置了我的 Xamarin Forms 项目,并在每个项目中从 nuget 安装了 zxing。在大多数情况下,应用程序会执行它们需要执行的操作(单击按钮时执行 QR 扫描)。
我的问题是,我不需要单独的扫描 View ,而是通过自定义渲染器将其作为我的主 UI 的一部分。
我遇到了一个问题。当我点击触发依赖服务的按钮时,zxing 会启动一个新 View 。据我所知,这是正确的行为,那么有没有办法告诉 zxing 它需要使用我的自定义 View 作为覆盖 View ?
最佳答案
您应该将其实现为具有针对每个平台的自定义渲染器的自定义 View 。 http://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/
复制自 https://github.com/Redth/ZXing.Net.Mobile
使用 ZXingScanner View /片段/控件
在每个平台上,ZXing 扫描仪都被实现为可重用组件( View 、片段或控件),并且可以直接使用可重用组件,而根本不需要使用 MobileBarcodeScanner 类。在每个平台上, View /片段/控件的实例包含控制扫描仪所需的必要属性和方法。默认情况下,除非您在 View /片段/控件的实例上设置 CustomOverlay 属性以及 UseCustomOverlay 属性,否则会自动使用默认叠加层。您可以在 View /片段/控件上使用 ToggleTorch() 或 StopScanning() 等方法,但是,当您准备好扫描 View 时,您有责任使用回调和 MobileBarcodeScanningOptions 实例调用 StartScanning(...)开始。如果您想随时取消,您还有责任停止扫描。
每个平台的 View /片段/控制类是:
- iOS:ZXingScannerView (UIView) - 请参阅 ZXingScannerViewController.cs View Controller 有关如何使用此 View iOS 的示例: AVCaptureScannerView (UIView) - 这是相当于 API ZXingScannerView,但使用Apple的AVCaptureSession元数据引擎 扫描条形码而不是ZXing.Net。看 AVCaptureScannerViewController.cs View Controller 的示例 如何使用此 View
- Android:ZXingScannerFragment(片段)- 请参阅 ZXingActivity.cs Activity 有关如何使用此片段的示例
- Windows Phone:ZXingScannerControl (UserControl) - 请参阅 ScanPage.xaml 有关如何使用此控件的示例的页面
关于zxing - 将自定义渲染器与 zxing 和 xamarin 表单一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31811946/