簡體   English   中英

ZXing Xamarin在IOS上形成白色背景

[英]ZXing Xamarin forms white background on IOS

Xamarin.Forms的ZXing條碼掃描器存在問題。 掃描儀可以在Android上完美運行,但是在IOS上我看不到相機圖像(預覽)。 如果我將條形碼放在IOS的前面,則掃描儀會在IOS上掃描條形碼,但攝像機預覽只是白色背景。

我嘗試玩這些選項,但沒有運氣。 我們正在將Prism.Forms用於MVVM。

如前所述,我的代碼在android上運行良好。 以下是一些詳細信息:

  • 在兩個平台上都正確設置了權限。
  • NuGets ZXing.Net.Mobile和ZXing.Net.Mobile.Forms也添加了所有三個項目(Android,IOS和可移植)
  • 我們正在使用.NET Standard 2.0
  • Xamarin.Forms是版本3.4.0

ScannerView.xaml

<forms:ZXingScannerPage xmlns="http://xamarin.com/schemas/2014/forms"
                    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                    xmlns:forms="clr-namespace:ZXing.Net.Mobile.Forms;assembly=ZXing.Net.Mobile.Forms"
                    x:Class="App.Portable.View.ScannerView">
<ContentPage.Content>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <forms:ZXingScannerView x:Name="scanner" Grid.Column="0" Grid.Row="0" HorizontalOptions="EndAndExpand" VerticalOptions="FillAndExpand"
                                IsScanning="{Binding IsScanning}"
                                IsAnalyzing="{Binding IsAnalyzing}"
                                Result="{Binding Result, Mode=TwoWay}"
                                ScanResultCommand="{Binding CmdScanResult}"
                                Options="{Binding ScannerOptions}"
        />

        <forms:ZXingDefaultOverlay Grid.Column="0" Grid.Row="0"
                                   TopText="Some title"
                                   ShowFlashButton="False"
                                   BottomText="Some bottom text"
                                   Opacity="0.9"/>
    </Grid>
</ContentPage.Content>

ScannerViewModel.cs

public class ScannerViewModel : ViewModelBase
{
    //Initializing variables

    public ScannerViewModel()
    {
        var options = new MobileBarcodeScanningOptions();
        options.TryHarder = true;
        options.InitialDelayBeforeAnalyzingFrames = 300;
        options.DelayBetweenContinuousScans = 100;
        options.DelayBetweenAnalyzingFrames = 200;
        options.AutoRotate = false;

        ScanningOptions = options;
        Title = "Barcode-Scanner";
        CmdScanResult = new DelegateCommand(OnCmdScanResult);
        IsScanning = true;
        IsAnalyzing = true;
    }

    public MobileBarcodeScanningOptions ScanningOptions
    {
        get => _scanningOptions;

        set => SetProperty(ref _scanningOptions, value);
    }

    public bool IsScanning
    {
        get => _isScanning;

        set => SetProperty(ref _isScanning, value);
    }

    public bool IsAnalyzing
    {
        get => _isAnalyzing;

        set => SetProperty(ref _isAnalyzing, value);
    }

    public Result Result
    {
        get => _result;

        set => SetProperty(ref _result, value);
    }

    public DelegateCommand CmdScanResult { get; }

    private void OnCmdScanResult()
    {
        IsAnalyzing = false;
        IsScanning = false;
        Device.BeginInvokeOnMainThread(
            async () =>
                {
                    IsAnalyzing = false;

                    var parameters = new NavigationParameters();
                    parameters.Add(CodeConstants.BARCODE, Result);
                    await NavigationService.GoBackAsync(parameters);
                });
    }
}

是否有人在我的代碼上看到問題,或者對如何做得更好或至少使其起作用有建議?

編輯:我將Testproject上傳到我的倉庫以重現該錯誤。 掃描儀可在iPhone上運行,但不顯示相機預覽: https : //gitlab.com/mitti2000/zxingtest

原因:ZXingScannerViewZXingDefaultOverlay放在網格的同一單元格中,然后將ZXingScannerViewHorizontalOptions設置為EndAndExpand

解:

HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM