сделать снимок методом CameraOverlayView

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


person user921509    schedule 06.02.2012    source источник
comment
Просто продолжайте и попробуйте что-нибудь. Возвращайтесь сюда, если столкнетесь с конкретными проблемами.   -  person mvds    schedule 06.02.2012
comment
jcuz.wordpress.com/2010/02/17/pickerfocus   -  person Sharme    schedule 06.02.2012
comment
На самом деле это руководство, на котором основан мой проект. Но в нем ничего не говорится о методе создания снимков ... Спасибо!   -  person user921509    schedule 07.02.2012


Ответы (1)


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

ОП написала:

Вот какое решение:

У меня два 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.

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

person Community    schedule 26.01.2015