Отображение камеры изменяется при повороте экрана - PullRequest
0 голосов
/ 26 октября 2018

У меня есть этот код, который отображает заднюю камеру в портретном режиме.У меня странная проблема, когда я поворачиваю свой Iphone, дисплей меняется с искаженным изображением на экране (например, плохое соотношение).Я хочу заблокировать портрет, кто-нибудь знает, где мой код не так?

var previewLayer: CALayer!
  override func viewDidLoad() {
        super.viewDidLoad()
        previewLayer = CALayer()
          previewLayer.anchorPoint = CGPoint.zero
        previewLayer.bounds = view.bounds
         self.view.layer.insertSublayer(previewLayer, at: 0)
 if TARGET_OS_SIMULATOR != 0 {
            let alert = UIAlertController(title: "prompt", message: "Simulator not supported", preferredStyle: .alert)
            self.present(alert, animated: true, completion: nil)
        } else {
            setupCaptureSession()
        }
        captureSession?.startRunning()
}

Вот мой забавный setupCaptureSession:

func setupCaptureSession() {
        captureSession = AVCaptureSession()
        captureSession.beginConfiguration()
        captureSession.sessionPreset = .high

        self.currentDevice = AVCaptureDevice.default(for: .video)
        let deviceInput = try! AVCaptureDeviceInput(device: self.currentDevice!)
        if captureSession.canAddInput(deviceInput) {
            captureSession.addInput(deviceInput)

            self.currentDeviceInput = deviceInput
        }

        let dataOutput = AVCaptureVideoDataOutput()
        dataOutput.videoSettings = [kCVPixelBufferPixelFormatTypeKey as String : Int(kCVPixelFormatType_32BGRA)]
        dataOutput.alwaysDiscardsLateVideoFrames = true


        if captureSession.canAddOutput(dataOutput) {
            captureSession.addOutput(dataOutput)
        }

        dataOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "VideoQueue"))

        let metadataOutput = AVCaptureMetadataOutput()
        metadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)

        if captureSession.canAddOutput(metadataOutput) {
            captureSession.addOutput(metadataOutput)
            print(metadataOutput.availableMetadataObjectTypes)
            metadataOutput.metadataObjectTypes = [AVMetadataObject.ObjectType.face]
        }

        captureSession.commitConfiguration()
    }

Кто-нибудь знает, как я могу заблокировать экран, чтобы избежать этого эффекта при повороте?(Например, настроить его только на портрет).

Спасибо!

...