Pergunta

Para detectar a orientação do telefone ao tirar uma foto, eu uso

orientation == UIDeviceOrientationLandscapeRight
orientation == UIDeviceOrientationPortraitUpsideDown
orientation == UIDeviceOrientationPortrait
orientation == UIDeviceOrientationLandscapeLeft

Mas estes funcionam se a imagem estiver sendo tirada do lado. Como verifico se o iPhone está inclinado para baixo para ser plano, por exemplo, ao tirar uma foto aérea?

Foi útil?

Solução

Existe outra constante para a orientação do dispositivo:

typedef enum {
   UIDeviceOrientationUnknown,
   UIDeviceOrientationPortrait,
   UIDeviceOrientationPortraitUpsideDown,
   UIDeviceOrientationLandscapeLeft,
   UIDeviceOrientationLandscapeRight,
   UIDeviceOrientationFaceUp,
   UIDeviceOrientationFaceDown
} UIDeviceOrientation;

Você pode encontra-los aqui: Referência da classe Uidevice

Outras dicas

Dê uma olhada em UIAccelerometer (e UIAccelerometerDelegate) Classes que devem ser usadas para detectar movimentos de dispositivos.
Editar: Na classe Uiaccelerometer, referência, existem links para 3 amostras relacionadas: Acelerometergraph, GLGRAVITY e GlPaint

Há um aplicativo de amostra em http://developer.apple.com/iphone Isso representa dados brutos do acelerômetro. Instale -o no seu dispositivo e dê uma olhada no tipo de dados que você obtém.

O aplicativo de amostra vem com uma opção (acho que é "amortecimento") que efetivamente cancela a gravidade. Você não quer fazer isso - de fato, a gravidade é o que vai "acelerar" o seu dispositivo no eixo z quando estiver plano ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top