Masquer / Afficher l'animation de l'appareil photo Iris / Shutter de l'iPhone
Je ne suis pas en mesure de Cacher les iphone obturateur de la Caméra de l'ouverture d'animation pour mon application.
Je suis à l'aide de UIImagePickerController pour accéder à l'iphone appareil photo et à l'aide de mon propre superposition des contrôleurs.
Est-il un moyen pour enlever les initiale sur le déclencheur(aussi connu comme l'Iris) de l'animation que l'appareil démarre.
Merci
[MODIFIER]
Pour ceux qui veulent connaître la façon de changer l'iris de l'appareil de l'animation.
Ci-dessous la fonction est appelée avant de l'iris de l'appareil de l'animation commence.
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
//Here is were I make the camera preview fit the entire screen.
//This might violate the "don't change the view hierarchy"-rule.
//So I am not sure if it is valid for App Store commitment.
//However, the NSLogs are used to
//figure out which subview is the actual Camera Preview which turns out
//to be the PLPreviewView. (uncomment to se the printouts).
//Change it's size to fit the entire screen (and scale it accordingly
//to avoid distorted image
NSLog(@"WillShowViewController called...");
NSLog(@"VC:view:subviews\n %@\n\n", [[viewController view] subviews]);
NSLog(@"VC:view:PLCameraView:subviews\n %@\n\n", [[[[viewController view] subviews] objectAtIndex: 0] subviews]);
NSLog(@"VC:view:PLCameraView:PLPreviewView:subviews\n %@\n\n", [[[[[[viewController view] subviews] objectAtIndex: 0] subviews] objectAtIndex: 0] subviews]);
NSLog(@"VC:view:PLCameraView:PLCropOverLay:subviews\n %@\n\n", [[[[[[viewController view] subviews] objectAtIndex: 0] subviews] objectAtIndex: 1] subviews]);
NSLog(@"VC:view:PLCameraView:UIImageView:subviews\n %@\n\n", [[[[[[viewController view] subviews] objectAtIndex: 0] subviews] objectAtIndex: 2] subviews]);
}
Dans la fonction ci-dessus, vous pouvez aller à travers chaque couche à l'aide de la normale NSMuatableArray syntaxe comme objectAtIndex
espère que cela peut vous aider.
Ce qui concerne,
Ankur
source d'informationauteur Ankur
Vous devez vous connecter pour publier un commentaire.
À l'aide de cette réponse comme un point de départ, j'ai finalement résolu ce problème:
REMARQUE: Ce n'est évidemment pas 3.3.1-conforme.
Écouter la
UINavigationControllerDidShowViewControllerNotification
sur votreUIImagePickerController
et laPLCameraViewIrisAnimationDidEndNotification
à l'échelle mondiale.Traverse le point de vue de la hiérarchie (à partir de la principale
UIWindow
) à la recherche de laPLCameraView
. Enregistrer l'index de la vue contre les principauxUIWindow
car vous en aurez besoin plus tard.Supprimer la
PLCameraView
de sonsuperView
. Si vous le souhaitez, insérez votre propre point de vue à l'indice mondial de 0.Lors de l'iris de l'animation est terminée, retirez votre point de vue et re-ajouter le
PLCameraView
à son indice d'origine.Est venu à travers un semblable: je voulais avoir l'obturateur apparaissent lorsque je prends la photo déclenchée par un bouton dans une auto.cameraOverlayView d'un UIImagePickerController. Arrivés à cette page, fait quelques recherches supplémentaires et arrivés à cette solution.
Synopsis:
Solution:
J'ai foiré autour avec un peu, mais l'envoi de diverses combinaisons de vue du cycle de vie des méthodes pour le sélecteur d'images. (viewWillAppear, viewDidAppear, etc.) Mais je ne me souviens pas de ceux qui finissent par travailler.
Désolé pour la réponse de revenir si tard. J'ai trouvé la solution pour que bien, j'ai joué un peu avec le point de vue de la hiérarchie de l'cameraView et en ajoutant mes propres couche au-dessus de tout. L'animation a eu lieu là-bas et une fois que l'obturateur est ouvert la première couche a été supprimé. Si quelqu'un a besoin d'aucune aide supplémentaire avec le code s'il vous plaît laissez-moi savoir, je vais vous donner les étapes exactes et de la syntaxe.
-Ankur
joshwa la réponse de masque totalement l'ensemble de la vue de la caméra pour la durée de l'iris de l'animation. Pour ma part, j'avais besoin de la vue de la caméra visible, juste sans l'iris de l'animation. J'ai été en mesure d'accomplir ceci avec un peu de peaufinage de sa méthode. Comme d'autres l'ont noté, il peut ou peut ne pas être autorisé sur l'app store puisque nous allons jouer avec le point de vue de la hiérarchie ainsi que l'écoute des sans-papiers des notifications.
3 ivars sont nécessaires:
Cacher la fermeture de l'iris de l'image et de supprimer l'animation de la vue. J'ai tout simplement essayé de cacher l'animation point de vue, mais l'animation était encore visible:
Lorsque l'animation est terminée, pour afficher l'image d'iris et ajouter de nouveau l'animation de vue:
Ci-dessous la fonction est appelée avant de l'iris de l'appareil de l'animation commence.
Dans la fonction ci-dessus, vous pouvez aller à travers chaque couche à l'aide de la normale NSMuatableArray syntaxe comme objectAtIndex
espère que cela peut vous aider.
Ce qui concerne,
Ankur
Pour exposer sur Catalin réponse, (qui était super d'ailleurs), j'ai découvert que si vous modifiez la méthode "animateIrisOpen" légèrement, la présentation est une fraction mieux... mais perceptible.