Ios 只有在屏幕上以AVFoundation为中心时,才能读取Datamatrix

Ios 只有在屏幕上以AVFoundation为中心时,才能读取Datamatrix,ios,swift,xamarin.ios,avfoundation,Ios,Swift,Xamarin.ios,Avfoundation,我使用的是AVFoundation条形码扫描仪,它必须扫描类型datamatrix,但如果它不在预览图像的中心,则不会进行扫描,例如,如果带有datamatrix的标签位于屏幕顶部,则无法进行扫描 这是我的输入设备配置 captureDevice.LockForConfiguration(out _); captureDevice.FocusMode = AVCaptureFocusMode.ContinuousAutoFocus; captureDevice.ExposureMode = AV

我使用的是AVFoundation条形码扫描仪,它必须扫描类型datamatrix,但如果它不在预览图像的中心,则不会进行扫描,例如,如果带有datamatrix的标签位于屏幕顶部,则无法进行扫描

这是我的输入设备配置

captureDevice.LockForConfiguration(out _);
captureDevice.FocusMode = AVCaptureFocusMode.ContinuousAutoFocus;
captureDevice.ExposureMode = AVCaptureExposureMode.ContinuousAutoExposure;
captureDevice.UnlockForConfiguration();
预览和会话

var previewLayer = AVCaptureVideoPreviewLayer.FromSession(_captureSession);
previewLayer.VideoGravity = AVLayerVideoGravity.ResizeAspectFill;
captureView.Layer.AddSublayer(previewLayer);
previewLayer.Frame = captureView.Bounds;
previewLayer.LayoutIfNeeded();
captureView.LayoutIfNeeded();
var con = previewLayer.Connection;
con.VideoOrientation = AVCaptureVideoOrientation.Portrait;
_captureSession.CommitConfiguration();
_captureSession.StartRunning();
outputMetadata.RectOfInterest = previewLayer.MapToMetadataOutputCoordinates(View.Frame);

确保正确设置了Datamatrix的方向。这是一个可能对您有所帮助的示例。@LucasZhang MSFT在本例中,同样的情况也会发生,标签必须位于黄色矩形的中心。我把矩形放在哪个位置无关紧要,因为它是可调的,我必须将数据矩阵居中。你能分享你的样本,这样我就可以在我这边测试它吗?@LucasZhang MSFT对不起,我没有回应,我出去了。这个要点包含了我在其中设置的viewDidLoad和DidOutputMetadataObjects,你可以尝试使用Frame而不是AutoLayout。