Затвор камеры появляется перед пользовательским UIView? - PullRequest
3 голосов
/ 29 июня 2011

У меня есть пользовательский UIView, который я создал для отображения своих пользовательских кнопок и панели инструментов. Когда я впервые призвал его показать, панель находится на верхней части затвора (что хорошо). Но после загрузки камеры перед ней появляется затвор, а затем открывается.

Если вы посмотрите на родной camera.app, он этого не делает. Панель инструментов остается там все время. Вот мой код:

// .h

UIImagePickerController *theCamera;
@property (nonatomic, retain) UIImagePickerController *theCamera;


// .m

theCamera = [[UIImagePickerController alloc] init];
theCamera.delegate = self;
theCamera.sourceType = UIImagePickerControllerSourceTypeCamera;
theCamera.showsCameraControls = NO;
theCamera.toolbar.alpha = 0;
theCamera.navigationBarHidden = YES;
theCamera.toolbarHidden = YES;
theCamera.wantsFullScreenLayout = YES;
theCamera.cameraViewTransform = CGAffineTransformMakeScale(1.25, 1.25);

UIImageView *tabBarBack = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tab_bar_back.png"]];
tabBarBack.frame = CGRectMake(0, 422, 320, 58);
[customView addSubview:tabBarBack];

theCamera.cameraOverlayView = customView;
[self presentModalViewController:theCamera animated:YES];

Очевидно, что есть еще несколько кнопок, которые я добавляю к customView, но вы понимаете концепцию.

Ответы [ 3 ]

1 голос
/ 22 февраля 2013

Подписаться на:

AVCaptureSessionDidStartRunningNotification

Это когда начинается анимация открытия радужной оболочки.Если вы добавите cameraOverlayView в течение этого времени, он будет правильно закрыт радужной оболочкой.Он публикуется одновременно с этим личным уведомлением.Это документированный подход, который не рискует отклонить приложение.

0 голосов
/ 31 мая 2013

На iOS 6+, если вы добавили свой контроллер в качестве делегата для UIImagePickerController, этот код должен гарантировать, что затвор остается позади вашей камеры.iOS до iOS 6, хотя.

0 голосов
/ 30 июня 2011

AFAIK, нет прямого способа сделать это. Если вы используете cameraOverlay, вы получите затвор для всего экрана.
Однако существуют альтернативные методы (игра с иерархией представлений), которые помогут вам сделать экран предварительного просмотра родительским представлением. Я не уверен, что этот подход правильный в соответствии с рекомендациями магазина приложений.
взгляните на Скрыть / показать анимацию диафрагмы / затвора камеры iPhone , чтобы лучше понять, как этого добиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...