Ограничение AVCaptureVideoPreviewLayer для определенного кадра в Swift
Я пытаюсь создать приложение для камеры, в котором видеопоток с камеры ограничен размером, который я определил в макете раскадровки, где я использую UIImageView, называемый imageView, для определения макета. Я использовал инструмент закрепления, чтобы ограничить imageView определенным расстоянием от сторон вида, но я получаю странное поведение, когда imageView выглядит правильно, но слой предварительного просмотра камеры, называемый previewLayer, отключен. Я не уверен, почему это так, так как я использую фрейм imageView для определения фрейма previewLayer, как показано ниже:
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
self.view.layer.addSublayer(previewLayer)
let viewLayer : CALayer = imageView.layer
previewLayer?.frame = imageView.frame
Кажется, что я не могу опубликовать изображение, но получаю imageView, как положено, но слой предварительного просмотра камеры намного меньше, хотя я пытаюсь получить два одинакового размера.
Я не уверен, что мне следует сделать, чтобы предварительный просмотр камеры соответствовал размеру imageView (который я могу перемещать на раскадровке). Любая помощь очень ценится!
1 ответ
Проблема была вызвана автоматическим размещением из-за инструмента pin, который изменил границы imageView. Однако границы previewLayer были определены предыдущими границами imageView, прежде чем были применены ограничения. Чтобы решить проблему, я сделал вызов layoutIfNeeded(), который заставил ограничения быть примененными, и так previewLayer получил окончательные границы для imageView.