Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Возможно, вы пытаетесь использовать UIImagePickerController. Но я знаю это одно решение вашей проблемы. Вы можете сделать это легко, используя классы AVCamCaptureManager и AVCamRecorder. У Apple есть демонстрационная программа, созданная на сайте разработчика здесь. Он называется AVCam. Говоря простыми словами, что он делает, когда вы нажимаете, чтобы открыть камеру, она вызывает классы и методы, которые отвечают за открытие камеры iPhone и запись видео или запись звука. Он вызывает те же классы, которые вызывается UIImagePickerController. Таким образом, ваша камера откроется и начнет принимать входные данные.

Теперь, если вы откроете файл xib этого проекта AVCam, вы найдете небольшой объект UIView. Это представление отвечает за отображение канала камеры. Вы можете изменить размер этого вида в соответствии с желаемым размером, и вход камеры будет отображаться в этой области. Вы также можете поместить изображение рамки вокруг него в соответствии с вашим выбором.

Это работало для меня, когда я хотел изменить размер входных данных камеры и захватить фотографии. Надеюсь, это сработает и для вас.

Ответ 2

Создайте UIImagePickerController из кода, настройте его свойства, добавьте на него наложение, а также с контроллером, управляйте тем, что вы хотите на этом оверлее: настраиваемые элементы управления, накладывающиеся изображения и т.д.

Что-то вроде этого:

self.picker = [[UIImagePickerController alloc] init];
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
self.picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
self.picker.showsCameraControls = NO;
self.picker.navigationBarHidden = YES;
self.picker.toolbarHidden = YES;
self.picker.wantsFullScreenLayout = YES;

// Insert the overlay
self.overlay = [[OverlayViewController alloc] initWithNibName:@"Overlay" bundle:nil];
self.overlay.pickerReference = self.picker;
self.picker.cameraOverlayView = self.overlay.view;
self.picker.delegate = self.overlay;

[self presentModalViewController:self.picker animated:NO];

OverlayViewController - это контроллер, который вы должны написать, чтобы контролировать все, что вы добавляете на оверлей.

pickerReference - это свойство, которое вы можете сохранить для отправки заказов на камеру. Например, вы можете вызвать следующее из IBAction, исходящего из UIButton, помещенного на наложение:

[self.pickerReference takePicture];

Ответ 3

Ознакомьтесь с ссылкой на класс UIImagePickerController, что прямо в документации...

Для этого есть свойства, особенно свойства cameraOverlayView и showsCameraControls.

Таким образом, вы можете скрыть элементы управления, предоставить настраиваемое оверлейное представление и добавить подзаголовки в это настраиваемое представление, чтобы добавить пользовательские кнопки, фреймы и т.д.

Ответ 4

версия Swift 3 для ответа от Oliver:

self.picker = UIImagePickerController()
self.picker.sourceType = .camera
self.picker.cameraCaptureMode = .photo
self.picker.cameraDevice = .rear
self.picker.showsCameraControls = false
self.picker.isNavigationBarHidden = true
self.picker.isToolbarHidden = true

// Insert the overlay
self.overlayViewController = self.storyboard?.instantiateViewController(withIdentifier: "Overlay") as! OverlayViewController

self.picker.cameraOverlayView = self.overlayViewController.view
self.picker.delegate = self.overlayViewController
self.navigationController?.present(self.picker, animated: true, completion: nil)

Протоколы OverlayViewController:

class OverlayViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate