2016-04-12 22 views
1

Şu anda Xamarin Formları (paylaşılan) kullanarak bir çapraz platform uygulaması üzerinde çalışıyorum. EAN-13 barkodu oluşturmam gerekiyor ve kodum Android'de iyi çalışıyor, ancak iOS'ta hiçbir şey olmuyor. ZXingBarcodeImageView kullanıyorum. Bu benim kodum.ZXing Barkod ImageView gösterilmiyor oluşturulan barkod Xamarin Formlar

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

DÜZENLEME

Tamam, sorun giderilene kadar bu yüzden, bu yerine kolları platformspecific kod yaptı. Yani şimdi benim kodum böyle.

#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 

cevap

3

Tamam, bu paketteki bir sorun değildi. Sadece bunun gibi düzgün bir şekilde başlatılması gerekiyordu. öyle,

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

, benim AppDelegat.cs şöyle görünür: Android platformu üzerinde

, benim MainActivity.cs sıfırlanması gereken ZXing.Net olduğunu şöyle Başlatılması gereken ZXing.Net global:

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(); bana hata veriyor. Net.Mobile ..... ZXing'de bulunamadı. – Dipak

+0

Ne nugetpackage kullandınız?

+0

ZXing.Net.Mobile paketini yükledim. version = 2.1.47 – Dipak