Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ZXing条码图像视图不显示生成的条码Xamarin表单_C#_Xamarin_Xamarin.ios_Xamarin.forms_Zxing - Fatal编程技术网

C# ZXing条码图像视图不显示生成的条码Xamarin表单

C# ZXing条码图像视图不显示生成的条码Xamarin表单,c#,xamarin,xamarin.ios,xamarin.forms,zxing,C#,Xamarin,Xamarin.ios,Xamarin.forms,Zxing,我目前正在使用Xamarin表单(共享)开发一个跨平台应用程序。我需要生成一个EAN-13条形码,我的代码在Android上运行良好,但在iOS上什么也没发生。我用的是ZXingBarcodeImageView。 这是我的密码 public class CardPage : ContentPage { ZXingBarcodeImageView barcode = new ZXingBarcodeImageView { HorizontalOptions = LayoutOpti

我目前正在使用Xamarin表单(共享)开发一个跨平台应用程序。我需要生成一个EAN-13条形码,我的代码在Android上运行良好,但在iOS上什么也没发生。我用的是ZXingBarcodeImageView。 这是我的密码

public class CardPage : ContentPage
{
  ZXingBarcodeImageView barcode = new ZXingBarcodeImageView
  {
    HorizontalOptions = LayoutOptions.Center,
    VerticalOptions = LayoutOptions.Center,
  };

  barcode.BarcodeFormat = ZXing.BarcodeFormat.EAN_13;
  barcode.BarcodeOptions.Height = 25;
  barcode.BarcodeOptions.Width = 75;
  barcode.BarcodeValue = "2800100028014";

  Content = barcode;
}
编辑

好的,所以我制作了平台特定的代码来处理这个问题,直到问题得到解决。现在我的代码是这样的

#if __IOS__

  var writer = new ZXing.Mobile.BarcodeWriter
  {
    Format = ZXing.BarcodeFormat.EAN_13,
    Options = new ZXing.Common.EncodingOptions
    {
      Width = 75,
      Height = 25,
      Margin = 30
    }
  };

  var b = writer.Write("2800100028014");

  Image m = new Image
  {
    HorizontalOptions = LayoutOptions.FillAndExpand,
    VerticalOptions = LayoutOptions.FillAndExpand,
    Source = ImageSource.FromStream(() => b.AsPNG().AsStream())
  };

  Content = m;
#endif
#if __ANDROID__

  ZXingBarcodeImageView barcode = new ZXingBarcodeImageView
  {
    HorizontalOptions = LayoutOptions.FillAndExpand,
    VerticalOptions = LayoutOptions.FillAndExpand,
  };

  barcode.BarcodeFormat = ZXing.BarcodeFormat.EAN_13;
  barcode.BarcodeOptions.Height = 25;
  barcode.BarcodeOptions.Width = 75;
  barcode.BarcodeOptions.Margin = 20;
  barcode.BarcodeValue = "2800100028014";

  Content = barcode;
#endif

好的,所以这不是包装中的问题。只是需要像这样正确地初始化它

#if __IOS__

  var writer = new ZXing.Mobile.BarcodeWriter
  {
    Format = ZXing.BarcodeFormat.EAN_13,
    Options = new ZXing.Common.EncodingOptions
    {
      Width = 75,
      Height = 25,
      Margin = 30
    }
  };

  var b = writer.Write("2800100028014");

  Image m = new Image
  {
    HorizontalOptions = LayoutOptions.FillAndExpand,
    VerticalOptions = LayoutOptions.FillAndExpand,
    Source = ImageSource.FromStream(() => b.AsPNG().AsStream())
  };

  Content = m;
#endif
#if __ANDROID__

  ZXingBarcodeImageView barcode = new ZXingBarcodeImageView
  {
    HorizontalOptions = LayoutOptions.FillAndExpand,
    VerticalOptions = LayoutOptions.FillAndExpand,
  };

  barcode.BarcodeFormat = ZXing.BarcodeFormat.EAN_13;
  barcode.BarcodeOptions.Height = 25;
  barcode.BarcodeOptions.Width = 75;
  barcode.BarcodeOptions.Margin = 20;
  barcode.BarcodeValue = "2800100028014";

  Content = barcode;
#endif
在Android平台上,我的MainActivity.cs如下所示,需要初始化的是ZXing.Net:

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);
    global::Xamarin.Forms.Forms.Init (this, bundle);
    global::ZXing.Net.Mobile.Forms.Android.Platform.Init();
    LoadApplication (new Test.App ());
    this.ActionBar.SetIcon(Android.Resource.Color.Transparent);
}
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    global::Xamarin.Forms.Forms.Init ();
    global::ZXing.Net.Mobile.Forms.iOS.Platform.Init();
    LoadApplication (new Test.App ());
    return base.FinishedLaunching (app, options);
}
在iOS平台上,我的AppDelegat.cs如下所示,需要初始化的是ZXing.Net:

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);
    global::Xamarin.Forms.Forms.Init (this, bundle);
    global::ZXing.Net.Mobile.Forms.Android.Platform.Init();
    LoadApplication (new Test.App ());
    this.ActionBar.SetIcon(Android.Resource.Color.Transparent);
}
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    global::Xamarin.Forms.Forms.Init ();
    global::ZXing.Net.Mobile.Forms.iOS.Platform.Init();
    LoadApplication (new Test.App ());
    return base.FinishedLaunching (app, options);
}

global::ZXing.Net.Mobile.Forms.iOS.Platform.Init();给我一个错误。Net.Mobile。。。。。在ZXing中找不到。您使用了什么nugetpackage?我正在使用我安装的软件包ZXing.Net.Mobile。版本=2.1。47@DipakAkhade-您是否构建了iOS版本?是的。它现在运转良好。我刚刚重新安装了Zxing.Net.Mobile软件包。谢谢!