Я учусь на Свифте - делаю успехи. Мое приложение должно сканировать штрих-код. Я пытаюсь показать камеру в середине экрана между двумя полосами пространства над и под 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()
}