метод фотосъемки на cameraOverlayView - PullRequest
1 голос
/ 06 февраля 2012

Моя проблема; Скрыть настройки камеры по умолчанию и наложить его на мой собственный. Это делается с помощью свойства cameraOverlayView. У меня также были проблемы с запуском метода takePicture.

1 Ответ

0 голосов
/ 26 января 2015

(Вопрос решен в комментариях и в редактировании. См. Вопрос без ответов, но проблема решена в комментариях (или расширена в чате) )

ОП написал:

Вот что стало решением:

У меня есть два UIViewController. Основной ViewController и CustomOverlay (для элементов управления камерой).

В ViewController я объявляю тип источника и оверлей для управления камерой может следующим образом:

- (void)viewDidLoad
{
    // notification from the CustomOverlay Controller that triggers the eTakePicture method
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(eTakePicture:) name:@"eTakePicture" object:nil];

    daysBtn.delegate = self;
    daysBtn.hidden = YES;

    picker = [[UIImagePickerController alloc] init];
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
    picker.showsCameraControls = NO;
    picker.navigationBarHidden = YES;
    picker.wantsFullScreenLayout = YES;
    picker.delegate = self;

    overlay = [[CustomOverlay alloc] initWithNibName:@"CustomOverlay" bundle:nil];
    // Overlay for the camera controls, note the "= overlay.view", the ".view" was important
    // because the overlay is a new UIViewcontroller (with xib) so you have to call the
    // view. Most tutorials that I saw were based on UIView so only "= overlay" worked.
    picker.cameraOverlayView = overlay.view;
    [self presentModalViewController:picker animated:NO];

    [super viewDidLoad];
}

Теперь на CustomOverlay, который является UIViewController, у меня есть кнопка «Сделать снимок», и я хочу, чтобы эта кнопка вызывала метод в главном ViewController:

- (IBAction)shoot:(id)control {

    [[NSNotificationCenter defaultCenter] postNotificationName:@"eTakePicture" object:self];

}

И вернемся к основному ViewController:

-(void)eTakePicture:(NSNotification *)notification
{
    [picker takePicture];
}

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

Надеюсь, это поможет кому-то там. Любой вопрос, просто спросите.

...