Existe alguma maneira de testar a câmera do iPhone no simulador sem ter que implantar em um dispositivo? Isso parece terrivelmente entediante.
Existe alguma maneira de testar a câmera do iPhone no simulador sem ter que implantar em um dispositivo? Isso parece terrivelmente entediante.
Respostas:
Há vários recursos específicos do dispositivo que você precisa testar no dispositivo, mas não é mais difícil do que usar o simulador. Basta criar um destino de depuração para o dispositivo e deixá-lo conectado ao computador.
Lista de ações que requerem um dispositivo real:
Eu precisava testar algumas sobreposições personalizadas para fotos. As sobreposições precisavam ser ajustadas com base no tamanho / resolução da imagem.
Abordei isso de uma maneira semelhante à sugestão de Stefan. Decidi codificar uma resposta de câmera "fictícia".
Quando o simulador está em execução, eu executo esse código fictício em vez do padrão "captureStillImageAsynchronouslyFromConnection".
Nesse código fictício, eu construo uma "foto preta" da resolução necessária e a envio através do pipeline para ser tratada como uma foto normal. Essencialmente, proporcionando a sensação de uma câmera muito rápida.
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);
A imagem acima é equivalente a fotos de 8MP que a maioria dos dispositivos atuais envia. Obviamente, para testar outras resoluções, você alteraria o tamanho.
Um motivo comum para a necessidade de acessar a câmera é fazer capturas de tela para a AppStore.
Como a câmera não está disponível no simulador, um bom truque (o único que eu conheço) é redimensionar sua visualização no tamanho que você precisa, apenas o tempo necessário para tirar as capturas de tela. Você irá cortá-los mais tarde.
Claro, você precisa ter o dispositivo com a tela maior disponível.
O iPad é perfeito para testar layouts e criar instantâneos para todos os dispositivos. As capturas de tela para iPhone6 + terão que ser um pouco ampliadas (com escala de 1.078125 - Não é grande coisa…)
Bom link para uma resolução rápida de dispositivos iOS ref: http://www.iosres.com/
Editar: em um projeto recente, em que um controlador de exibição de câmera personalizado é usado, substituí o AVPreview por um UIImageView em um destino que eu só uso para executar no simulador. Dessa forma, eu posso automatizar as capturas de tela para o upload do iTunesConnect. Observe que os botões de controle da câmera não estão em sobreposição, mas em uma visualização da visualização da câmera.
A resposta do @Craig abaixo descreve outro método que eu achei bastante inteligente - ele também funciona com sobreposição de câmera, ao contrário da minha.
Eu nunca tentei, mas você pode tentar! iCimulator
Eu escrevi uma exibição de substituição para usar no modo de depuração. Ele implementa a mesma API e faz os mesmos retornos de chamada delegados. No meu caso, fiz com que ele retornasse uma imagem aleatória do meu conjunto de testes. Bastante trivial de escrever.