3

iPhone 画面の半分にカメラのプレビューを追加しました。

-(void) viewDidAppear:(BOOL)animated
{
    AVCaptureSession *session = [[AVCaptureSession alloc] init];
    session.sessionPreset = AVCaptureSessionPresetMedium;

    CALayer *viewLayer = self.vImagePreview.view.layer;
    NSLog(@"viewLayer = %@", viewLayer);

    AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];

    captureVideoPreviewLayer.frame = self.vImagePreview.view.bounds;
    [self.vImagePreview.view.layer addSublayer:captureVideoPreviewLayer];

    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

    NSError *error = nil;
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
    if (!input) {
        // Handle the error appropriately.
        NSLog(@"ERROR: trying to open camera: %@", error);
    }
    [session addInput:input];

    [session startRunning];
}

viewDidLoad メソッドにカメラ ビュー コントローラーを追加し、そのフレームを設定しました。

vImagePreview.view.frame = CGRectMake(0, 44, 320, 179);

しかし、カメラ ビューは 320 度ではありません。この方法でカメラ ビューの幅を設定する方法はありますか?
高さは問題ありませんが、幅は約100幅です。
このリンクの幅は 320 のようですが、カメラ ビューは何らかの理由で小さくなっています (幅)。![ここに画像の説明を入力][1]

4

2 に答える 2

11
 captureVideoPreviewLayer.frame = self.vImagePreview.view.bounds;

これが犯人です。

プロパティを追加する必要がありますvideoGravity(ビデオがプレーヤー レイヤーの境界矩形内にどのように表示されるかを示します)。AVLayerVideoGravityResizeAspectFillboundsx and y- coordinates that establishes the center of a rectangle.

CGRect bounds=self.vImagePreview.view.layer.bounds;
avLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
avLayer.bounds=bounds;
avLayer.position=CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
于 2012-09-30T13:51:34.193 に答える
0

カメラのプレビュー画面の幅を変更して確認してください。

于 2012-09-28T13:25:08.330 に答える