Могу ли я иметь камеру, которая не представлена ​​модально? Как? - PullRequest
3 голосов
/ 19 октября 2011

Я работаю над приложением, где я взял на себя разработку от других людей. Камера, которую они представляют, представлена ​​модально после нажатия пользователем кнопки. Я хотел бы иметь камеру, которая является "постоянным" видом, как приложение камеры в iOS. Руководства по программированию всегда говорят о модальном представлении камеры, но другие приложения, такие как Instagram, имеют камеру, которая постоянно является частью вида.

Могу ли я сделать это? Как?

Спасибо!

1 Ответ

3 голосов
/ 19 октября 2011

Да, вы можете использовать AVFoundation. Импортируйте эти заголовки:

#import <CoreMedia/CoreMedia.h>
#import <AVFoundation/AVFoundation.h>
#import <QuartzCore/QuartzCore.h>

И используйте это для создания слоя AVCaptureVideoPreviewLayer и отображения его на виде.

// Get annd start session
    AVCaptureSession *captureSession = [[AVCaptureSession alloc] init];
    [captureSession startRunning];

    // Get preview layer
    AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:captureSession];
    [previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
    CGRect layerRect = CGRectMake(0, 0, 320, 460);
    [previewLayer setFrame:layerRect];

    // Get video device
    AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

    if (videoDevice) {
        NSError *error;
        AVCaptureDeviceInput *videoIn = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:&error];

        if (!error) {
            if ([captureSession canAddInput:videoIn]){
                [captureSession addInput:videoIn];
            }
        }
    }

    // Add layer to view
    [[[self view] layer] addSublayer:previewLayer];
...