Comment définir le balayage lié en utilisant AVFoundation

J'essaye le scanner de code barres dans une de mon application d'iOS. J'avais réussi à mettre en place le scanner de codes à barres.

Mais actuellement, la lecture des codes à barres est affichée en plein écran uniquement. Mais ce que je veux, c'est que la video devrait être visionnée en plein écran et que le code à barres devrait être scanné dans une portion particulière seulement. C'est-à-dire, si le code à barres est placé dans cette partie, alors seulement il devrait être affiché. Voici mon code actuel:

session=[[AVCaptureSession alloc]init]; device=[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; NSError *error=nil; input=[AVCaptureDeviceInput deviceInputWithDevice:device error:&error]; if (input) { [session addInput:input]; } else{ NSLog(@"Errod : %@",error); } output=[[AVCaptureMetadataOutput alloc]init]; [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()]; [session addOutput:output]; output.metadataObjectTypes=[output availableMetadataObjectTypes]; prevLayer=[AVCaptureVideoPreviewLayer layerWithSession:session]; [prevLayer setFrame:self.view.bounds]; [prevLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill]; [self.view.layer addSublayer:prevLayer]; [session startRunning]; [self.view bringSubviewToFront:self.lblCode]; [self.view bringSubviewToFront:self.imgShade1]; [self.view bringSubviewToFront:self.imgShade2]; 

C'est ce que vous êtes après:

 CGRect visibleMetadataOutputRect = [prevLayer metadataOutputRectOfInterestForRect:areaOfInterest]; output.rectOfInterest = visibleMetadataOutputRect; 

où areaOfInterest est un CGRect. J'espère que cela résout le problème.

Peut-être qu'il est tard pour répondre à cette question, mais je viens de surmonter ce problème moi-même. Alors, espérons aider les autres plus tard.

Le mot-key est rectOfInterest de AVCaptureMetadataOutput, et voici comment j'ai mis le mien.

 CGSize size = self.view.bounds.size; _output.rectOfInterest = CGRectMake(cropRect.origin.y/size.height, cropRect.origin.x/size.width, cropRect.size.height/size.height, cropRect.size.width/size.width); 

Pour plus de détails, vous pouvez consulter le document d'Apple Inc.

Bonne chance. 🙂