可以通过调整capturePhoto方法的settings参数中的outputRect属性来解决偏移的问题。如下所示:
let photoSettings = AVCapturePhotoSettings()
photoSettings.isAutoStillImageStabilizationEnabled = true
photoSettings.isHighResolutionPhotoEnabled = false // 设置拍照质量
photoSettings.previewPhotoFormat = settings.embeddedThumbnailPhotoFormat // 使用预览格式
let previewPixelType = photoSettings.previewPhotoFormat.pixelFormatType
let previewFormat = settings.embeddedThumbnailPhotoFormat
let previewSize = CGSize(width: previewFormat.width, height: previewFormat.height)
let previewCroppingRect = settings.previewCroppingRect
let previewOutputRect = CGRect(x: 0, y: 0, width: 1, height: 1)
let rotatedPreviewCroppingRect = previewCroppingRect.applying(deviceOrientationTransform)
let rotatedPreviewOutputRect = CGRect(x: rotatedPreviewCroppingRect.origin.x / previewSize.width, y: rotatedPreviewCroppingRect.origin.y / previewSize.height, width: rotatedPreviewCroppingRect.width / previewSize.width, height: rotatedPreviewCroppingRect.height / previewSize.height)
photoSettings.previewPhotoFormat.resizingMode = .none
photoSettings.previewPhotoFormat.outputRect = rotatedPreviewOutputRect
self.photoOutput.capturePhoto(with: photoSettings, delegate: self)