#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, и это очень просто.
Надеюсь, это поможет.