【问题标题】:UIButton are not visible over camera stream (Xamarin.iOS)UIButton 在相机流中不可见 (Xamarin.iOS)
【发布时间】:2017-10-25 09:41:24
【问题描述】:

我制作了一个 Xamarin.iOS 应用,其中有一个摄像头流。 在我的故事板中,我有一个 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();
    }

在这里您可以看到带有按钮的故事板

【问题讨论】:

    标签: c# ios xamarin.ios uibutton ios-camera


    【解决方案1】:

    这里liveCameraStream 视图悬停在按钮上方,因此我们必须将其发送回视图层次结构,以便可以查看按钮。

    以下任何一项都应该适合您:

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

    编辑:

    第二个选项适用于这篇文章。

    【讨论】:

    • 很高兴看到它成功了!!你能告诉我这两个选项中哪个选项有效吗?
    • 第二个选项
    猜你喜欢
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 2011-08-26
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多