#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 в режиме реального времени в режиме просмотра.