Xamarin 手机-如何改变相机扫描仪的大小?

Xamarin 手机-如何改变相机扫描仪的大小?,xamarin,configuration,xamarin.forms,zxing,barcode-scanner,Xamarin,Configuration,Xamarin.forms,Zxing,Barcode Scanner,更新: 我曾尝试在一个名为OpenCameraScanner的App.cs方法中实现这一点(单击要扫描的页面上的一个按钮即可调用此方法): 但是,当调用此方法时,打开的屏幕为白色空白,您无法看到其后面的摄影机视图。不知道为什么 我正在Xamarin.Forms项目中使用ZXing.Mobile(目前用于iOS)在iPad上实现摄像头扫描功能 目前,我使用以下两行代码使其运行良好: var scanner = new ZXing.Mobile.MobileBarcodeScanner(); va

更新:

我曾尝试在一个名为OpenCameraScanner的App.cs方法中实现这一点(单击要扫描的页面上的一个按钮即可调用此方法):

但是,当调用此方法时,打开的屏幕为白色空白,您无法看到其后面的摄影机视图。不知道为什么


我正在Xamarin.Forms项目中使用ZXing.Mobile(目前用于iOS)在iPad上实现摄像头扫描功能

目前,我使用以下两行代码使其运行良好:

var scanner = new ZXing.Mobile.MobileBarcodeScanner();
var result = await scanner.Scan();
然而,当相机打开进行扫描时,它会占据整个iPad屏幕,这个屏幕非常大

问题:有没有办法调整相机覆盖的大小?(因此它不是全屏)


我看到
scanner.Scan()
方法采用了类型为
ZXing.Mobile.MobileBarcodeScanningOptions的可选选项参数
——我尝试过使用它,但是唯一可能的相关选项是一个
摄像机解决方案选择程序
——但我真的很难找到任何关于它的文档。

有一个ZXing示例应用程序,展示了如何将
ZXingScannerView
ZXingDefaultOverlay
嵌入
Xamarin.Form
网格中:


我明白了,所以看起来我需要使用自定义覆盖()@jbyrd如果你愿意,你可以使用默认的
ZXingDefaultOverlay
,如果这与你的应用风格不匹配,是的,你可以创建一个自定义的。不过,我仍然对它的工作原理有点困惑-现在,我所要做的就是调用你在我的原始帖子中看到的两行。通过这个,我们引入了一个页面(Scan()基本上打开了一个页面吗?)。如果我创建了一个自定义页面,那么这两行是如何适应的……还是我必须做一些完全不同的事情?@jbyrd
ZXingScannerView
是一个
视图
,所以你可以将它放在任何可以放置
视图(按钮/标签/…)的地方,如果它在你的UI设计中的新页面中,或者在模式弹出窗口中或插入现有页面,这是您的选择;我在问一个更基本的问题。目前,我有一个带有“开始照相机扫描”按钮的页面,点击该按钮,它就会执行
var scanner=new ZXing.Mobile.MobileBarcodeScanner()var result=wait scanner.Scan()-就是这样!Soooo…要使用自定义覆盖,单击按钮,我该怎么做?启动一个全新的页面-如示例中的CustomScanPage()?该页面必须包含ZXingScannerView和OnScanResult代码,等等。?我的意思是这绝对是可行的;对于自定义视图来说似乎很多。
var scanner = new ZXing.Mobile.MobileBarcodeScanner();
var result = await scanner.Scan();
public CustomScanPage () : base ()
{
    zxing = new ZXingScannerView
    {
        HorizontalOptions = LayoutOptions.FillAndExpand,
        VerticalOptions = LayoutOptions.FillAndExpand,
        AutomationId = "zxingScannerView",
    };
    zxing.OnScanResult += (result) => 
        Device.BeginInvokeOnMainThread (async () => {

            // Stop analysis until we navigate away so we don't keep reading barcodes
            zxing.IsAnalyzing = false;

            // Show an alert
            await DisplayAlert ("Scanned Barcode", result.Text, "OK");

            // Navigate away
            await Navigation.PopAsync ();
        });

    overlay = new ZXingDefaultOverlay
    {
        TopText = "Hold your phone up to the barcode",
        BottomText = "Scanning will happen automatically",
        ShowFlashButton = zxing.HasTorch,
        AutomationId = "zxingDefaultOverlay",
    };
    overlay.FlashButtonClicked += (sender, e) => {
        zxing.IsTorchOn = !zxing.IsTorchOn;
    };
    var grid = new Grid
    {
        VerticalOptions = LayoutOptions.FillAndExpand,
        HorizontalOptions = LayoutOptions.FillAndExpand,
    };
    grid.Children.Add(zxing);
    grid.Children.Add(overlay);

    // The root page of your application
    Content = grid;
}