C'è un modo per testare la fotocamera dell'iPhone nel simulatore senza doverla distribuire su un dispositivo? Questo sembra terribilmente noioso.
C'è un modo per testare la fotocamera dell'iPhone nel simulatore senza doverla distribuire su un dispositivo? Questo sembra terribilmente noioso.
Risposte:
Ci sono una serie di funzionalità specifiche del dispositivo che devi testare sul dispositivo, ma non è più difficile che usare il simulatore. Basta creare una destinazione di debug per il dispositivo e lasciarla collegata al computer.
Elenco di azioni che richiedono un dispositivo effettivo:
Avevo bisogno di testare alcune sovrapposizioni personalizzate per le foto. Le sovrapposizioni dovevano essere regolate in base alle dimensioni / risoluzione dell'immagine.
Mi sono avvicinato a questo in un modo simile al suggerimento di Stefan, ho deciso di codificare una risposta "fittizia" della telecamera.
Quando il simulatore è in esecuzione, eseguo questo codice fittizio invece dello standard "captureStillImageAsynchronouslyFromConnection".
In questo codice fittizio, creo una "foto nera" della risoluzione necessaria e poi la mando attraverso la pipeline per essere trattata come una foto normale. Essenzialmente fornendo la sensazione di una fotocamera molto veloce.
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'immagine sopra è equivalente a una foto da 8 MP che la maggior parte dei dispositivi attuali invia. Ovviamente per testare altre risoluzioni dovresti cambiare le dimensioni.
Un motivo comune per la necessità di accedere alla videocamera è creare screenshot per l'AppStore.
Dal momento che la fotocamera non è disponibile nel simulatore, un buon trucco (l'unico che conosco) è ridimensionare la vista alla dimensione che ti serve, giusto il tempo per fare gli screenshot. Li ritaglierai più tardi.
Certo, devi avere a disposizione il dispositivo con lo schermo più grande.
L'iPad è perfetto per testare i layout e creare istantanee per tutti i dispositivi. Gli screenshot per iPhone6 + dovranno essere leggermente allungati (scalati di 1.078125 - Non è un grosso problema ...)
Buon collegamento a una risoluzione rapida dei dispositivi iOS: http://www.iosres.com/
Modifica: in un progetto recente, in cui viene utilizzato un controller personalizzato per la visualizzazione della telecamera, ho sostituito AVPreview con un UIImageView in un target che utilizzo solo per l'esecuzione nel simulatore. In questo modo posso automatizzare gli screenshot per il caricamento di iTunesConnect. Si noti che i pulsanti di controllo della fotocamera non si trovano in una sovrapposizione, ma in una vista sull'anteprima della fotocamera.
La risposta di @Craig di seguito descrive un altro metodo che ho trovato abbastanza intelligente: funziona anche con la sovrapposizione della fotocamera, contrariamente al mio.
Non l'ho mai provato, ma puoi provarlo! iCimulator
Ho scritto una vista sostitutiva da utilizzare in modalità debug. Implementa la stessa API e effettua gli stessi callback delegati. Nel mio caso ho fatto in modo che restituisse un'immagine casuale dal mio set di prova. Abbastanza banale da scrivere.