【问题标题】:iOS button is clickable but not visibleiOS 按钮可点击但不可见
【发布时间】:2020-11-24 08:23:47
【问题描述】:

我有一个视图(我们称之为 scanView),它可以打开相机扫描二维码。我在上面放了一个按钮,可以打开或关闭闪光灯。我面临的问题是按钮被单击但不可见,即我可以通过单击放置按钮的屏幕来打开或关闭闪光灯,但按钮不可见。我检查了按钮的 Alpha,也尝试将子视图放在前面。没有任何效果。是与 iOS 的 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()

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

【问题讨论】:

  • 检查按钮的宽度和高度以及标题和背景图片(如果有)

标签: ios swift uibutton qr-code


【解决方案1】:

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

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

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

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

【讨论】:

  • 嗨@rommex。感谢您花时间回答我的问题。请在我编辑的问题中查看上面的层次结构图像。此外,按钮是一个图像,与它是透明的图片无关,因为我尝试过使用不同的图像
  • @Shubham1212 “隐藏”属性是否未检查?按钮的帧值是多少?
  • 是的,隐藏属性未选中。按钮的框架值为:X:310, Y:20, Width: 50, Height: 50
  • 我设法通过以编程方式设置按钮的 zposition 解决了这个问题
  • @Shubham1212 但是按钮停留在其他视图下方的原因是什么?怎么还能被窃听?
【解决方案2】:

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

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

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

【讨论】:

  • 嗨@rana5ohaib。感谢您花时间回答我的问题。请在我编辑的问题中查看上面的层次结构图片
  • 该图像中选择的图层,是您的按钮吗?层次结构确实显示它在顶部并且是可见的,我想知道是什么使它在您的设备上不可见。还是看不出来吗? ...您也可以分享设备的屏幕截图吗?
  • 我设法通过以编程方式设置按钮的 zposition 解决了这个问题
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 2011-08-04
    • 2018-05-28
    • 1970-01-01
    相关资源
    最近更新 更多