3 votes

L'obturateur de l'appareil photo apparaît devant une UIView personnalisée ?

J'ai un UIView personnalisé que j'ai créé pour afficher mes boutons et ma barre d'outils personnalisés. Lorsque j'ai demandé à ce qu'elle s'affiche, la barre se trouve au-dessus de l'obturateur (ce qui est bien). Mais après le chargement de l'appareil photo, l'obturateur passe devant, puis s'ouvre.

Si vous regardez le camera.app natif, il ne fait pas ça. La barre d'outils reste là tout le temps. Voici mon code :

// .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];

Il y a évidemment d'autres boutons que j'ajoute à la customView mais vous comprenez le concept.

1voto

Jacob Jennings Points 1780

S'abonner à :

AVCaptureSessionDidStartRunningNotification

C'est à ce moment que l'animation d'ouverture de l'iris commence. Si vous ajoutez une cameraOverlayView pendant ce temps, elle sera correctement recouverte par l'iris. Il est affiché en même temps que la notification privée PL . Il s'agit d'une approche documentée qui ne risque pas le rejet de l'application.

0voto

Tatvamasi Points 1923

Pour l'instant, il n'existe pas de moyen direct de le faire. Si vous utilisez cameraOverlay, vous obtiendrez l'obturateur pour l'écran complet.
Cependant, il existe d'autres méthodes (en jouant avec la hiérarchie des vues) qui vous aideront à faire de votre écran de prévisualisation une vue parent. Je ne suis pas sûr que cette approche soit correcte au regard des directives de l'App Store.
jeter un coup d'œil à Cacher/afficher l'animation du diaphragme et du déclenchement de l'appareil photo de l'iPhone pour mieux comprendre comment y parvenir.

0voto

Greg Points 15661

Sous iOS 6+, si vous avez ajouté votre contrôleur comme délégué du UIImagePickerController, ce code devrait garantir que l'obturateur reste derrière votre cameraOverlayView :

- (void) navigationController:(UINavigationController*) navigationController willShowViewController:(UIViewController*) viewController animated:(BOOL) animated {
    self.imagePickerController.cameraOverlayView = ...; // your camera overlay view
}

Je n'ai pas testé les versions d'iOS antérieures à iOS 6.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X