Моя проблема; Скрыть элементы управления камерой по умолчанию и наложить их на мои собственные. Это делается с помощью свойства cameraOverlayView. У меня также возникла проблема с запуском метода takePicture.
сделать снимок методом CameraOverlayView
Ответы (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.
Надеюсь, это поможет кому-то там. Любой вопрос, просто задайте.