iOS按钮可点击但不可见

时间:2020-08-04 09:02:38

标签: ios swift uibutton qr-code

我有一个视图(我们称它为scanView),它可以打开相机以扫描QR码。我在上面放了一个按钮,它可以打开或关闭闪光灯。我面临的问题是该按钮正在被单击,但它不可见,即,我可以通过单击放置按钮的屏幕来打开或关闭闪光灯,但是该按钮不可见。我检查了按钮的Alpha,并尝试将子视图也显示在前面。没事。与iOS的QR阅读器有关吗? 这是QR阅读器的实现:

        captureSession = AVCaptureSession()

        guard let videoCaptureDevice = AVCaptureDevice.default(for: .video) else { return }
        let videoInput: AVCaptureDeviceInput

        do {
            videoInput = try AVCaptureDeviceInput(device: videoCaptureDevice)
        } catch {
            return
        }

        if (captureSession.canAddInput(videoInput)) {
            captureSession.addInput(videoInput)
        } else {
            failed()
            return
        }

        let metadataOutput = AVCaptureMetadataOutput()

        if (captureSession.canAddOutput(metadataOutput)) {
            captureSession.addOutput(metadataOutput)

            metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
            metadataOutput.metadataObjectTypes = [.qr]
        } else {
            failed()
            return
        }

        previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
        previewLayer.frame = scanView.layer.bounds
        previewLayer.videoGravity = .resizeAspectFill
        
        scanView.layer.addSublayer(previewLayer)
        captureSession.startRunning()

view heirarchy debugger image

正如您在上面看到的,为清楚起见,我也添加了背景色和背景图像。根据我的说法,该按钮在层次结构上看起来不错。 在此scanView上,我从我的xib文件中添加了按钮

3 个答案:

答案 0 :(得分:1)

首先,它可能与QR Reader的实现无关。

第二,问问自己应该如何看待按钮?标题?图片?

第三,您始终可以在运行应用程序时按“调试视图层次结构”按钮,以停止其执行并查看屏幕上显示的所有视图。

位于同一调试工具窗格中的“调试视图层次结构”按钮,位于其他调试工具(如断点)下方。

答案 1 :(得分:1)

了解如何使用Debug View Hierarchy,以便您可以清楚地看到按钮在屏幕上的位置以及不可见的原因。

我认为您对按钮的图像有疑问,因为您可以单击按钮但看不到按钮,请确保将图像正确添加到按钮上。

请记住一件事,如果它是可单击的,那么它在那里,请专注于其表示。另外,请尝试向其添加背景色并删除图片,以确保您的其他实现工作正常。

答案 2 :(得分:0)

我设法通过设置按钮的zposition解决了这个问题。谢谢大家的宝贵时间