0

問題は不安定です (更新ごとに 2 つのサイズの間でサイズがジャンプします)、transformedMetadataObjectForMetadataObject によって返されるサイズは、previewLayer のサイズを変更するために使用した場合にのみです。

    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];
4

1 に答える 1