2016-08-03 6 views
0

modifiedMetadataObjectMetadataObjectによって返される問題は、previewLayerのサイズ変更に使用する場合にのみ不安定です(サイズは2つのサイズの間で大きくなります)。 previewLayerを作成するための目的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); 

コード(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

私は、あなたが関数transformedMetadataObjectForMetadataObjectをdo.Theしたいものを知っているpreviewLayer座標たmetaDataObjectを返し、そうしないでくださいそれの境界はmetaDataObjectのフレームです。このフレームを使用してpreviewLayerの境界を設定します。プレビューレイヤのフレームは、カメラのプレビューに使用するため変更しないでください。新しいmetaDataObjectの境界を使用して、層は顔を示す。

関連する問題