использовать камеру в качестве подвида

#iphone #objective-c #ios #ipad

#iPhone #objective-c #iOS #iPad

Вопрос:

я использую UIImagePickerControllerSourceTypeCamera в своем приложении, но хочу добавить вид камеры в подвиде. не как модальный вид.

теперь я использую

 UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.delegate = self;
[self presentModalViewController:picker animated:YES];   
  

я хочу использовать это так, но, похоже, это не работает..

 UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.delegate = self;
[picker.view setFrame:CGRectMake(300, 40, 300, 200)];
[self.view addSubview:picker.view];
  

я знаю, что UIImagePickerControllerSourceTypeCamera можно использовать только как модальный вид.
Как, например, Hipstamatic использует это, например?

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

1. Я предполагаю, что Hipstamatic использует модальный UIImagePickerController (без элементов управления), но накладывает на него собственные пользовательские представления.

Ответ №1:

Это возможно в iOS 4 с использованием фреймворка AVCaptureSession. Это намного сложнее, чем использование UIImagePickerController, но у вас есть полный контроль над вводом и выводом. Ключом к отображению камеры в качестве подвида является следующий код. Предположим, у вас есть вложенный просмотр под названием previewView, в котором вы хотите отобразить вид с камеры:

 AVCaptureSession *session = [[AVCaptureSession alloc] init];
AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];
previewLayer.frame = self.previewView.bounds; 
[self.previewView.layer addSublayer:previewLayer];
  

Необходимо выполнить дополнительные настройки, чтобы предоставить вашему объекту AVCaptureSession правильные устройства ввода и вывода и фактически делать снимки. Это можно найти в документации и примерах в Интернете.

Ответ №2:

Вы правы, единственными поддерживаемыми методами для отображения UIImagePickerController, похоже, являются presentModalViewController:animated: или UIPopoverController.

Я не знаком с Hipstamatic, но, скорее всего, он использует AVFoundation, в частности AVCaptureVideoPreviewLayer.

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

1. «Доступно в iOS 4.0 и более поздних версиях». Я никогда не использовал Hipstamatic, но я думаю, что он старше iOS 4.0.

Ответ №3:

Перейдите по ссылке, чтобы получить представление о том, как этого можно достичь. Обратите внимание на демонстрацию AVCam в developer.apple.com ресурсы для программы IOS. Вы определенно получите представление о том, как это работает. Вы должны быть зарегистрированным разработчиком в APPLE, и это очень просто.

Надеюсь, это поможет.