我正在尝试使用以下代码生成并显示Xamarin表单中的条形码。
barcode = new ZXingBarcodeImageView
{
HeightRequest = 400,
WidthRequest = 400
};
barcode.BarcodeFormat = ZXing.BarcodeFormat.QR_CODE;
barcode.BarcodeOptions.Width = 400;
barcode.BarcodeOptions.Height = 400;
barcode.BarcodeOptions.Margin = 10;
barcode.BarcodeValue = "ZXing.Net.Mobile";
Content = barcode;
Android代码在Android虚拟设备中呈现正常。另一方面,在iOS设备中,呈现失真的QR码。在iOS虚拟设备上呈现的QR码的宽高比不是正确的。
使用手机验证在Android虚拟设备上呈现的QR码。
修改 按照@wilson
的建议尝试了以下代码 try
{
barcode = new ZXingBarcodeImageView
{
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
};
barcode.BarcodeFormat = ZXing.BarcodeFormat.QR_CODE;
barcode.BarcodeOptions.Width = 500;
barcode.BarcodeOptions.Height = 500;
barcode.BarcodeOptions.Margin = 10;
barcode.BarcodeValue = "ZXing.Net.Mobile";
Content = barcode;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
不过,我看到了同样的问题。当我尝试@wilson的示例代码时,它在iPhone模拟器上运行正常。可能我应该按照建议使用内容视图。
编辑2 我尝试了如下所示的堆栈布局。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:AZCommute"
x:Class="AZCommute.MainPage">
<StackLayout HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand">
<Label Text="QR Code Generator" HorizontalOptions="Center"/>
<local:QRResult x:Name="qrResult"/>
</StackLayout>
</ContentPage>
但是,它没有任何帮助。没有在iOS上呈现。我尝试在初始化WidthRequest
时添加HeightRequest
和ZXingBarcodeImageView
,如下所示。
HorizontalOptions = LayoutOptions.Fill,
VerticalOptions = LayoutOptions.Fill,
WidthRequest = 410,
HeightRequest = 410,
现在,ZXingBarcodeImageView
在iPhone模拟器中呈现。但是,纵横比丢失(高度>宽度)。
注意:我正在使用ContentView
与StackLayout
答案 0 :(得分:0)
尝试像这样分配HorizontalOptions属性:
Input
或尝试创建barcode = new ZXingBarcodeImageView
{
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
};
barcode.BarcodeFormat = ZXing.BarcodeFormat.QR_CODE;
barcode.BarcodeOptions.Width = 500;
barcode.BarcodeOptions.Height = 500;
barcode.BarcodeValue = contentEntry.Text.Trim();
Content = barcode;
以显示QRCode。
有关详细信息,请参阅我的example。
答案 1 :(得分:0)
尝试放入StackLayout:)
barcode = new ZXingBarcodeImageView
{
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
};
barcode.BarcodeFormat = ZXing.BarcodeFormat.QR_CODE;
barcode.BarcodeOptions.Width = 500;
barcode.BarcodeOptions.Height = 500;
barcode.BarcodeOptions.Margin = 10;
barcode.BarcodeValue = "ZXing.Net.Mobile";
Content = new StackLayout{
HorizontalOptions = LayoutOptions.CenterAndExpand,
VerticalOptions = LayoutOptions.CenterAndExpand,
Children = {
barcode
}
};