Rilevare il dispositivo iPhone è piatto
-
21-09-2019 - |
Domanda
Per rilevare l'orientamento del telefono quando si scatta una foto che uso
orientation == UIDeviceOrientationLandscapeRight
orientation == UIDeviceOrientationPortraitUpsideDown
orientation == UIDeviceOrientationPortrait
orientation == UIDeviceOrientationLandscapeLeft
Ma questi funzionano se l'immagine è stata presa dal lato. Come posso controllare se l'iPhone è inclinato verso il basso per essere ad esempio piatta quando si scatta un'immagine aerea?
Soluzione
Esiste altra costante per l'orientamento del dispositivo:
typedef enum {
UIDeviceOrientationUnknown,
UIDeviceOrientationPortrait,
UIDeviceOrientationPortraitUpsideDown,
UIDeviceOrientationLandscapeLeft,
UIDeviceOrientationLandscapeRight,
UIDeviceOrientationFaceUp,
UIDeviceOrientationFaceDown
} UIDeviceOrientation;
Li potete trovare qui: UIDevice Class Reference
Altri suggerimenti
Date un'occhiata al UIAccelerometer
(e UIAccelerometerDelegate
) classi che devono essere utilizzati per rilevare i movimenti del dispositivo.
Modifica In riferimento UIAccelerometer classe ci sei collegamenti a 3 campioni correlati: AccelorometerGraph , GLGravity e GLPaint
c'è un'applicazione di esempio su http://developer.apple.com/iphone che i grafici grezzo i dati dall'accelerometro. Installarlo sul vostro dispositivo, e hanno uno sguardo al tipo di dati che si ottiene.
L'applicazione di esempio viene fornito con un'opzione (credo che sia "smorzamento"), che annulla efficacemente gravità. Non si vuole fare questo - di fatto gravità è quello che sta succedendo di "accelerare" il dispositivo lungo l'asse Z quando è piatto ...