Могу ли я иметь камеру, которая не представлена модально? Как?

#objective-c #ios #uiview #uiimagepickercontroller

#objective-c #iOS #uiview #uiimagepickercontroller

Вопрос:

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

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

Спасибо!

Ответ №1:

Да, вы можете использовать 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:amp;error];

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

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

Комментарии:

1. Отлично! Большое вам спасибо, попробую это как можно скорее. Однако, это только для захвата видео? Как насчет фотографий?

2. Этот код предназначен только для отображения камеры вашего iphone в режиме реального времени в режиме просмотра.