Frage

Wie kann ich herausfinden, ob das UideviceOrientationFaceUp Landschaftsangebote oder Porträt -Gesichtsanschluss ist?

Kann mir jemand sagen?

War es hilfreich?

Lösung

Es ist nicht möglich, da das Beschleunigungsmesser die Drehung um die Z -Achse nicht erkennen kann. Auf einem iPhone 4 könnten Sie das Gyroskop dafür vielleicht verwenden (mit der Koremotion), aber aber UIDevice hat dafür keine API. Sie müssten dann auch definieren, was die Startposition ist, da Sie nicht erkennen können, in welcher Richtung der Benutzer aus der Sicht des Geräts stammt.

Andere Tipps

UIDeviceOrientation Ermittelt Ihnen nur die Ausrichtung des physischen Geräts. Sie müssen Methoden verwenden, die verwendet werden UIInterfaceOrientation (aus UIApplication) Entscheidungen treffen, je nachdem, ob sich der Bildschirm im Porträt- und Landschaftsmodus befindet.

Sie können verwenden UIInterfaceOrientationIsLandscape() und UIInterfaceOrientationIsPortrait() mit einer UIInterfaceOrientation zu.

Mir ist klar, dass dies jetzt eine alte Frage ist, aber wenn man die Antworten betrachtet, werden alle übermäßig pedantisch. Falls jemand anderes darüber stolpert:

Die Antwort auf Ihr Problem besteht darin, dass Sie eine sekundäre Variable beibehalten, die Ihre akzeptierten Orientierungen darstellt.

Wenn die Benachrichtigung der Geräteorientierung eingeht, schauen Sie sich einfach die eingehende Orientierung an und prüfen Sie, ob es sich um eine akzeptable handelt (Porträt/Landschaft nicht Faceup/Face -Down), dann aktualisieren Variable als Orientierungsquelle.

Dies wirkt sich aus, die Ausrichtung auf die "zuletzt bekannte gute" Orientierung zu sperren.

UideviceOrientationFaceUp und UideViceOrientationFacedown sind Orientierungen für die flache, wenn das Gerät (wie auf einer Tabelle) liegt. Porträt und Landschaft machen in diesen Fällen keinen Sinn.

Es gibt keine Möglichkeit, aus der Orientierung herauszufinden. Ich habe eine Problemumgehung gefunden.

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
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top