Кнопка iOS активна, но не видна - PullRequest
1 голос
/ 04 августа 2020

У меня есть представление (назовем его scanView), которое открывает камеру для сканирования QR-кодов. Я поместил на него кнопку, которая открывает или закрывает fla sh. Проблема, с которой я столкнулся, заключается в том, что кнопка нажимается, но она не видна, т.е. я могу включить или выключить fla sh, щелкнув экран, на котором я разместил кнопку, но кнопка не отображается. Я проверил кнопку Alpha, попытался также вывести subview на передний план. Ничего не работает. Это какая-то проблема, связанная с QR-ридером iOS? Вот реализация 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

Ответы [ 3 ]

1 голос
/ 04 августа 2020

Узнайте, как использовать Debug View Hierarchy, чтобы вы могли четко видеть, где находится кнопка на экране и почему она не видна.

Я думаю, у вас проблема с изображением кнопки, потому что вы вы можете нажать на кнопку, но не видите ее, убедитесь, что изображение правильно добавлено на кнопку. на его презентации. Также попробуйте добавить к нему цвет фона и удалить изображение, чтобы убедиться, что другая ваша реализация работает правильно.

1 голос
/ 04 августа 2020

Во-первых, вероятно, это не связано с реализацией QR Reader.

Во-вторых, спросите себя, как должна быть видна кнопка? Заглавие? Image?

В-третьих, вы всегда можете нажать кнопку «Debug View Hierarchy» во время работы приложения, чтобы остановить его выполнение и увидеть все представления, присутствующие на экране.

'Debug View Hierarchy 'на той же панели инструментов отладки ниже, где размещены другие инструменты отладки (например, точки останова).

0 голосов
/ 05 августа 2020

Мне удалось решить проблему, установив zposition кнопки. Всем спасибо за уделенное время

...