uideviceオリエンテーション
-
23-10-2019 - |
質問
uideviceorientationfaceupがランドスケープの顔の正面またはポートレートの顔の正当性であるかどうかを確認するにはどうすればよいですか?
誰かが私に言うことができますか?
解決
加速度計はZ軸の周りの回転を検出できないため、不可能です。 iPhone4では、おそらくこれにジャイロスコープを使用することができます(コアモーションを使用)が、 UIDevice
このためのAPIはありません。また、デバイスの観点からユーザーがどの方向であるかを検出できないため、開始位置が何であるかを定義する必要があります。
他のヒント
UIDeviceOrientation
物理デバイスの方向を伝えるだけです。使用する方法を使用する必要があります UIInterfaceOrientation
(から UIApplication
)画面がポートレートモードとランドスケープモードであるかどうかに応じて決定を下す。
使用できます UIInterfaceOrientationIsLandscape()
と UIInterfaceOrientationIsPortrait()
とともに UIInterfaceOrientation
それも。
私はこれが今では古い質問であることに気づきましたが、答えを見ると、誰もが過度にペダンティックです。他の誰かがこれにつまずいた場合:
あなたの問題に対する答えは、あなたが受け入れられているオリエンテーションのいずれかである二次変数を維持することです。
デバイスの方向通知が入っている場合は、着信方向を見て、その許容可能な方向(肖像/ランドスケープではなく、顔面/顔向き)を確認し、セカンダリ変数を更新し、最後にセカンダリを使用してUI/アプリを更新することをトリガーします。方向ソースとして変数。
これは、オリエンテーションを「最後の既知の良い」方向にロックする効果があります。
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
}