Domanda

Come scoprire se l'UIDeviceOrientationFaceUp è il paesaggio a faccia in su o ritratto a faccia?

Uno può dirmi?

È stato utile?

Soluzione

Non è possibile, perché l'accelerometro non rileva la rotazione intorno all'asse z. Su un iPhone 4, si potrebbe forse usare il giroscopio per questo (utilizzando CoreMotion), ma UIDevice non dispone di un'API per questo. Si potrebbe quindi avere anche per definire ciò che la posizione di partenza è, perché non è possibile rilevare in quale direzione l'utente è dal punto di vista del dispositivo.

Altri suggerimenti

UIDeviceOrientation solo vi dirà l'orientamento del dispositivo fisico. È necessario utilizzare i metodi che uso UIInterfaceOrientation (da UIApplication) per prendere decisioni a seconda che lo schermo è in modalità verticale e orizzontale.

È possibile utilizzare UIInterfaceOrientationIsLandscape() e UIInterfaceOrientationIsPortrait() con un UIInterfaceOrientation troppo.

Mi rendo conto che questa è una vecchia questione ora, ma guardando le risposte tutti è essere eccessivamente pedante. Nel caso qualcuno inciampa altro in questo:

La risposta al vostro problema è per voi per mantenere una variabile secondaria che è uno dei tuoi orientamenti accettati.

Quando la notifica orientamento del dispositivo entra, è sufficiente guardare l'orientamento in entrata e vedere se un una accettabili, (ritratto / paesaggio non faccia in su / a faccia in giù) quindi aggiornare la variabile secondaria, e, infine, attivare un aggiornamento ui / app da lì utilizzando la variabile secondaria come fonte di orientamento.

Ciò avrà l'effetto di bloccare l'orientamento all'orientamento "Ultima".

UIDeviceOrientationFaceUp e UIDeviceOrientationFaceDown sono orientamenti per quando il dispositivo si posa piatta (come su un tavolo). Ritratto e Paesaggio non hanno senso in questi casi.

Non c'è modo si può scoprire da orientamento. Ho trovato una soluzione.

CGRect screenBounds = [[UIScreen mainScreen]bounds];

if(screenBounds.size.width > screenBounds.size.height)
{
    // This means FaceUP/Down is in Landscape
}
else
{
    // This means FaceUp/Down is in Portrait
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top