У меня есть этот код, который отображает заднюю камеру в портретном режиме.У меня странная проблема, когда я поворачиваю свой 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()
}
Кто-нибудь знает, как я могу заблокировать экран, чтобы избежать этого эффекта при повороте?(Например, настроить его только на портрет).
Спасибо!