iOS 按钮可点击但不可见

iOS button is clickable but not visible

我有一个视图(我们称它为 scanView)可以打开摄像头以扫描二维码。我在上面放了一个按钮,可以打开或关闭闪光灯。我面临的问题是按钮被点击但它不可见,即,我可以通过点击我放置按钮的屏幕来打开或关闭闪光灯,但按钮不可见。我检查了按钮的 Alpha,也尝试将子视图放在前面。什么都不管用。是否与 iOS 的 QR reader 有关? 下面是 QR Reader:

的实现
        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()

正如您在上面看到的那样,为了清晰起见,我也添加了背景颜色和背景图像。根据我的说法,按钮在层次结构中看起来很好。 在这个 scanView 上,我从我的 xib 文件中添加按钮

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

其次,问问自己按钮应该如何显示?标题?图片?

第三,您可以随时在 运行 应用程序时按 'Debug View Hierarchy' 按钮,以停止其执行并查看屏幕上显示的所有视图。

'Debug View Hierarchy' 按钮位于放置其他调试工具(如断点)下方的同一“调试工具”窗格中。

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

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

记住一件事,如果它是可点击的,那么它就在那里,关注它的呈现。还尝试为其添加背景颜色并删除图像,以确保您的其他实现正常工作。

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