Detectar o dispositivo para iPhone está plano
-
21-09-2019 - |
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?
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 ...