繁体   English   中英

UIButton在相机流上不可见(Xamarin.iOS)

[英]UIButton are not visible over camera stream (Xamarin.iOS)

我制作了一个Xamarin.iOS应用程序,其中有一个摄像头流。 在我的情节提要中,我有一个用于拍照的UIButton和一个用于切换相机的UIButton。

但是,当我启动我的应用程序时,这些按钮位于相机流下方。

有人知道如何将按钮放置在摄像机流上吗?

这是我的代码

public override void ViewDidLoad()
    {
        base.ViewDidLoad();

        liveCameraStream = PhotoView;

        SetupLiveCameraStream();
    }

    public void SetupLiveCameraStream()
    {
        captureSession = new AVCaptureSession();

        var viewLayer = liveCameraStream.Layer;
        var videoPreviewLayer = new AVCaptureVideoPreviewLayer(captureSession)
        {
            Frame = liveCameraStream.Bounds
        };
        liveCameraStream.Layer.AddSublayer(videoPreviewLayer);

        var captureDevice = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video);
        ConfigureCameraForDevice(captureDevice);
        captureDeviceInput = AVCaptureDeviceInput.FromDevice(captureDevice);

        var dictionary = new NSMutableDictionary();
        dictionary[AVVideo.CodecKey] = new NSNumber((int)AVVideoCodec.JPEG);
        stillImageOutput = new AVCaptureStillImageOutput()
        {
            OutputSettings = new NSDictionary()
        };

        captureSession.AddOutput(stillImageOutput);
        captureSession.AddInput(captureDeviceInput);
        captureSession.StartRunning();
    }

在这里您可以看到带有按钮的情节提要 我的应用程序的故事板

这里liveCameraStream View悬停在Button上方,因此我们必须将其发送回View Hierarchy中,以便可以查看Button。

以下任何一项都可以为您工作:

// 1
UIView cameraView = new UIView(videoPreviewLayer.Frame);
cameraView.Layer.AddSublayer(videoPreviewLayer);
View.AddSubview(cameraView);
View.SendSubviewToBack(cameraView);

-------OR-------

// 2
liveCameraStream.Layer.AddSublayer(videoPreviewLayer);
View.SendSubviewToBack(liveCameraStream);

将以下行替换为以上代码行:

liveCameraStream.Layer.AddSublayer(videoPreviewLayer);

编辑:

第二个选项适用于此职位。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM