ist ein Beispiel von Code aus einem Projekt habe ich, dass Sie auf dem richtigen Weg helfen kann
// where 'self.session' is previously setup AVCaptureSession
// setup metadata capture
AVCaptureMetadataOutput *metadataOutput = [[AVCaptureMetadataOutput alloc] init];
[self.session addOutput:metadataOutput];
[metadataOutput setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[metadataOutput setMetadataObjectTypes:@[AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeEAN13Code]];
// setup preview layer
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.session];
previewLayer.frame = self.previewView.bounds;
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
// we only want the visible area of the previewLayer to accept
// barcode input (ignore the rest)
// we need to convert rects coordinate system
CGRect visibleMetadataOutputRect = [previewLayer metadataOutputRectOfInterestForRect:previewLayer.bounds];
metadataOutput.rectOfInterest = visibleMetadataOutputRect;
// add the previewLayer as a sublayer of the displaying UIView
[self.previewView.layer addSublayer:previewLayer];
Ein Projekt: https: //github.com/jpwidmer/iOS7-BarcodeScanner –
Dazu: [previewLayer metadataOutputRectOfInterestForRect: previewLayer.bounds] Das Ergebnis lautet: {{nan, nan}, {nan, nan}} –
Beachten Sie, dass die Grenzen von previewLayer.frame aus self.previewView.bounds stammen (was einige zuvor instanziierte UIView sind). Sie sollten überprüfen, dass diese UIView Grenzen an diesem Punkt hat (z. B. verwenden Sie diesen Code vor Auto-Layout hat die Größe Ihrer Self.previewView ??) –