IOS Swift - наложение вида с камеры не должно закрывать строку состояния - PullRequest
0 голосов
/ 06 сентября 2018

enter image description here Я учусь на Свифте - делаю успехи. Мое приложение должно сканировать штрих-код. Я пытаюсь показать камеру в середине экрана между двумя полосами пространства над и под UIview. В нижней части поля есть кнопка для сохранения номера штрих-кода. Моя проблема в том, что мне нужно показывать строку состояния в верхней части экрана с уровнем сигнала, временем, батареей и т. Д., Когда пользователь сканирует, но он отображается в интерфейсе пользователя при открытии камеры. Я просмотрел другие посты и включил предложения, но проблема сохраняется. Любая помощь приветствуется.

Я загрузил изображение с закрытой строкой состояния.

Вот мой код:


class ScannerViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate {

@IBOutlet weak var cameraView: UIView!

@IBOutlet weak var selectScan1: UIButton!

var captureSession: AVCaptureSession!
var previewLayer: AVCaptureVideoPreviewLayer!

override func viewDidLoad() {
    super.viewDidLoad()

   // view.backgroundColor = UIColor.black
    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 = [.ean8, .ean13, .pdf417]
    } else {
        failed()
        return
    }

    previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)

    previewLayer?.videoGravity = AVLayerVideoGravity.resizeAspectFill

    previewLayer?.frame = self.cameraView.layer.frame
    cameraView.layer.addSublayer(previewLayer!)
    // **** note: select click to bounds check box in storyboard

    captureSession.startRunning()
}

I

enter image description here

...