UIDeviceOrientationFaceUp が横向きであるか縦向きであるかを確認する方法は?
誰でも教えてもらえますか?
UIDeviceOrientation
物理デバイスの向きのみを教えてくれます。UIInterfaceOrientation
(からUIApplication
) を使用して、画面が縦向きモードか横向きモードかによって決定を行うメソッドを使用する必要があります。
UIInterfaceOrientationIsLandscape()
とも使用できUIInterfaceOrientationIsPortrait()
ますUIInterfaceOrientation
。
これは今では古い質問だと思いますが、答えを見ると、誰もが過度に衒学的です。他の誰かがこれに遭遇した場合:
あなたの問題への答えは、あなたが受け入れた方向のいずれかである二次変数を保持することです。
デバイスの向きの通知が届いたら、着信方向を確認して、許容できる向きかどうかを確認し(縦向き/下向きではなく縦向き/横向き)、セカンダリ変数を更新し、最後にセカンダリを使用してそこからui/appの更新をトリガーしますオリエンテーションソースとして変数。
これは、方向を「最後の既知の良好な」方向にロックする効果があります。
加速度計は z 軸を中心とした回転を検出できないため、これは不可能です。iPhone 4 では、(CoreMotion を使用して) ジャイロスコープを使用できますが、UIDevice
このための API はありません。また、デバイスの視点からユーザーがどの方向にいるかを検出できないため、開始位置を定義する必要もあります。
UIDeviceOrientationFaceUp と UIDeviceOrientationFaceDown は、デバイスが (テーブルのように) 平らに置かれているときの向きです。この場合、ポートレートとランドスケープは意味がありません。
オリエンテーションでわかるわけがない。回避策を見つけました。
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
}