2016-08-03 13 views
0

modifiedMetadataObjectMethodObject가 previewLayer의 크기를 조절할 때만 문제가 발생하는 경우 문제가 불안정합니다 (업데이트 할 때마다 두 크기 사이의 크기가 변경됩니다). 만드는Objectively C transformedMetadataObjectForMetadataObject 미리보기 레이어의 크기를 조절할 때 불안정한 크기가됩니다.

for(AVMetadataObject *metadataObject in metadataObjects) { 
     if([metadataObject.type isEqualToString:AVMetadataObjectTypeFace]) { 
      // Take an image of the face and pass to CoreImage for detection 


      AVMetadataObject *metadataObjectR=[previewLayer transformedMetadataObjectForMetadataObject:metadataObject]; 


      previewLayer.bounds = CGRectMake(previewLayer.bounds.origin.x,previewLayer.bounds.origin.y, metadataObjectR.bounds.size.width,metadataObjectR.bounds.size.height); 

코드 previewLayer (previewViewLayer가의 CALayer입니다)

[captureSession addInput:vInput]; 
[captureSession setSessionPreset:AVCaptureSessionPresetPhoto]; 

previewViewLayer = [self.view layer]; 
[previewViewLayer setBackgroundColor:(__bridge CGColorRef _Nullable)([UIColor blackColor])]; 
previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:captureSession]; 
[previewLayer setFrame:[previewViewLayer bounds]]; 
[previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill]; 
[previewViewLayer addSublayer:previewLayer]; 

답변

0

난 당신이 previewLayer에 좌표 metaDataObject를 반환, 기능 transformedMetadataObjectForMetadataObject 안가면 할 무엇을 알고, 그래서하지 않습니다 그것의 경계는 metaDataObject` 프레임입니다. 그러나이 프레임을 사용하여 previewLayer의 경계를 설정합니다. previewLayer의 프레임은 카메라를 미리보기 위해 사용되므로 변경하면 안됩니다. 새 metaDataObject의 경계를 사용하여 프레임의 프레임을 변경해야합니다. 레이어는 얼굴을 나타냅니다.