1

最新の SDK を使用して iOS アプリケーションを開発しています。

私はカメラで作業していて、ズームしたいです。それを行うには、次のコードがあります。

- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self setUpVideo];
}

- (void)setUpVideo
{
    NSLog(@"Set up video");
    UIView *view = [self videoPreviewView];
    CALayer *viewLayer = [view layer];

    [viewLayer setMasksToBounds:YES];

    AVCaptureVideoPreviewLayer *newCaptureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:DataExchanger.cameraManager.captureSession];
    CGRect bounds = [view bounds];

    UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
    CGAffineTransform t;

    if (orientation == UIInterfaceOrientationLandscapeRight)
    {
        t = CGAffineTransformMakeRotation(-M_PI_2);
        bounds = CGRectMake(bounds.origin.x, bounds.origin.y,
                                bounds.size.height, bounds.size.width);
    }

    [newCaptureVideoPreviewLayer setFrame:bounds];
    [newCaptureVideoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];

    newCaptureVideoPreviewLayer.position = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
    newCaptureVideoPreviewLayer.affineTransform = t;

    [viewLayer insertSublayer:newCaptureVideoPreviewLayer below:[[viewLayer sublayers] objectAtIndex:0]];

    CGAffineTransform currentTransform = CGAffineTransformIdentity;
    CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, 2.0f, 2.0f);
    view.transform = newTransform;
}

しかし、ズーム画像とズームなしの同じ画像には違いがあります。カメラを動かさずにズームすると、中心が左下に移動したことがわかります。

たぶんvideoView、スケールを使用して新しい中心を計算する式で中心を移動する必要があります。

それを修正する方法を知っていますか?

4

0 に答える 0