【问题标题】:White screen appear when open camera in xamarin ios在 xamarin ios 中打开相机时出现白屏
【发布时间】:2019-07-03 11:26:41
【问题描述】:

当通过zxing打开相机进行二维码扫描时,在正确扫描二维码时出现代替相机白屏但显示白屏?

这是我的代码:

namespace Kefi.Controls
{
    public class CustomScanPage : ContentPage
    {
        ZXingScannerView zxing;
        public CustomScanPage() : base()
        {
            zxing = new ZXingScannerView
            {
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions = LayoutOptions.Center

            };
            NavigationPage.SetHasNavigationBar(this,false);
            zxing.OnScanResult += (result) =>
                Device.BeginInvokeOnMainThread(() =>
                {
                    zxing.IsAnalyzing = false;
                    zxing.IsScanning = false;
                    MessagingCenter.Send(result, "Scanresult");
                });
            var grid = new Grid
            {
                VerticalOptions = LayoutOptions.FillAndExpand,
                HorizontalOptions = LayoutOptions.FillAndExpand,
            };
        }
        protected  override void OnAppearing()
        {
            base.OnAppearing();
            zxing.Options.DelayBetweenAnalyzingFrames = 5;
            zxing.Options.DelayBetweenContinuousScans = 5;
            zxing.IsScanning = true;

        }

        protected override void OnDisappearing()
        {
            zxing.IsScanning = false;
            base.OnDisappearing();
        }

    }
}

【问题讨论】:

  • 你能分享一些你用来打开相机的代码吗?您是否正在向用户请求使用相机的权限?
  • 是的,相机权限已被允许。
  • 我的回答对你有用吗?

标签: xamarin xamarin.forms xamarin.ios


【解决方案1】:

您甚至没有将scannerView 添加到 contentPage,因此它不会显示。添加一个简单的StackLayout 来保存scannerView 然后将其设置为ContentPageContent

public CustomScanPage() 
        {

            zxing = new ZXingScannerView
            {
                HorizontalOptions = LayoutOptions.CenterAndExpand,
                VerticalOptions = LayoutOptions.CenterAndExpand,
                BackgroundColor = Color.Orange              
            };
            NavigationPage.SetHasNavigationBar(this, false);
            zxing.OnScanResult += (result) =>
                Device.BeginInvokeOnMainThread(() =>
                {
                    zxing.IsAnalyzing = false;
                    zxing.IsScanning = false;
                    MessagingCenter.Send(result, "Scanresult");
                });

            var layout = new StackLayout();
            layout.BackgroundColor = Color.Red;
            layout.Children.Add(zxing);

            Content = zxing;
        }

或者您可以在 xaml 中自定义scannerView,请参阅此处的博客:scanning-generating-barcodes-zxing

让我知道它是否适合你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 2020-07-12
    相关资源
    最近更新 更多