2016-04-12 44 views
1

現在、Xamarinフォーム(共有)を使用しているクロスプラットフォームアプリケーションで作業しています。私はEAN-13バーコードを生成する必要があり、私のコードはAndroid上で正常に動作しますが、iOSでは何も起こりません。私はZXingBarcodeImageViewを使用しています。 これは私のコードです。ZXing Barcode ImageViewが生成されたバーコードを表示していません。Xamarinフォーム

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; 
} 

EDIT

[OK]を、問題が解決されるまで私は、この代わりに、ハンドルにplatformspecificコードを作りました。だから私のコードはこれに似ています。

#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 

答えて

3

これはパッケージには問題ありませんでした。このように正しく初期化する必要があります。 Androidプラットフォーム上で

、私のMainActivity.csは次のようになり、それが初期化する必要ZXing.Netです:iOSのプラットフォームで

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); 
} 

、私のAppDelegat.csは次のようになり、それがありますZXing.Netを初期化する必要がありました:

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); 
} 
+0

global :: ZXing.Net.Mobile.Forms.iOS.Platform.Init();私にエラーを与える。 Net.Mobile ..... ZXingでは見つかりませんでした。 – Dipak

+0

どのようなナゲットパッケージを使用しましたか? targetFramework = "xamarinios10" /> –

+0

私はZXing.Net.Mobileパッケージをインストールしました。バージョン= 2.1.47 – Dipak

関連する問題