Existe-t-il un moyen de tester la caméra iPhone dans le simulateur sans avoir à déployer sur un appareil? Cela semble terriblement fastidieux.
Existe-t-il un moyen de tester la caméra iPhone dans le simulateur sans avoir à déployer sur un appareil? Cela semble terriblement fastidieux.
Réponses:
Il existe un certain nombre de fonctionnalités spécifiques à l'appareil que vous devez tester sur l'appareil, mais ce n'est pas plus difficile que d'utiliser le simulateur. Créez simplement une cible de débogage pour l'appareil et laissez-la attachée à l'ordinateur.
Liste des actions qui nécessitent un appareil réel:
J'avais besoin de tester des superpositions personnalisées pour les photos. Les superpositions devaient être ajustées en fonction de la taille / résolution de l'image.
J'ai abordé cela d'une manière qui était similaire à la suggestion de Stefan, j'ai décidé de coder une réponse de caméra "factice".
Lorsque le simulateur est en cours d'exécution, j'exécute ce code factice au lieu du standard "captureStillImageAsynchronouslyFromConnection".
Dans ce code factice, je crée une "photo noire" de la résolution nécessaire, puis je l'envoie à travers le pipeline pour être traitée comme une photo normale. Fournit essentiellement la sensation d'un appareil photo très rapide.
CGSize sz = UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation]) ? CGSizeMake(2448, 3264) : CGSizeMake(3264, 2448);
UIGraphicsBeginImageContextWithOptions(sz, YES, 1);
[[UIColor blackColor] setFill];
UIRectFill(CGRectMake(0, 0, sz.width, sz.height));
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
L'image ci-dessus équivaut à des photos 8MP que la plupart des appareils actuels envoient. Évidemment, pour tester d'autres résolutions, vous changeriez la taille.
Une raison courante de la nécessité d'accéder à la caméra est de faire des captures d'écran pour l'AppStore.
La caméra n'étant pas disponible dans le simulateur, une bonne astuce (la seule que je connaisse) est de redimensionner votre vue à la taille dont vous avez besoin, juste le temps de prendre les captures d'écran. Vous les recadrez plus tard.
Bien sûr, vous devez disposer de l'appareil avec le plus grand écran disponible.
L'iPad est parfait pour tester les mises en page et créer des instantanés pour tous les appareils. Les captures d'écran pour iPhone6 + devront être un peu étirées (mise à l'échelle de 1 078 125 - Ce n'est pas grave…)
Bon lien vers une référence rapide des résolutions d'appareils iOS: http://www.iosres.com/
Edit: Dans un projet récent, où un contrôleur de vue de caméra personnalisé est utilisé, j'ai remplacé l'AVPreview par un UIImageView dans une cible que je n'utilise que pour exécuter dans le simulateur. De cette façon, je peux automatiser les captures d'écran pour le téléchargement iTunesConnect. Notez que les boutons de contrôle de la caméra ne sont pas dans une superposition, mais dans une vue sur l'aperçu de la caméra.
La réponse @Craig ci-dessous décrit une autre méthode que j'ai trouvée assez intelligente - elle fonctionne également avec la superposition de caméra, contrairement à la mienne.
Je ne l'ai jamais essayé, mais vous pouvez l'essayer! iCimulateur
J'ai écrit une vue de remplacement à utiliser en mode débogage. Il implémente la même API et effectue les mêmes rappels de délégué. Dans mon cas, je lui ai fait renvoyer une image aléatoire de mon ensemble de test. Assez trivial à écrire.