2011-01-24 9 views
0

UIDeviceOrientationFaceUpがランドスケープかどうかを調べる方法FaceUpまたはPortraitUp?UIDeviceオリエンテーション

教えていただけますか?

+0

デバイスの「顔」が地球表面に対して垂直に配置されている場合にのみ、ポートレートおよび風景の向きが意味を持ちます。 –

答えて

0

加速度計がz軸の周りの回転を検出できないため、これは不可能です。 iPhone 4では、おそらくジャイロスコープをCoreMotionを使って使うことができますが、にはAPIがありません。また、ユーザーがデバイスの視点からどの方向にいるかを検出できないため、開始位置を定義する必要があります。

3

UIDeviceOrientationは、物理デバイスの向きのみを示します。画面が縦向きと横向きかどうかに応じて、UIInterfaceOrientationUIApplication)を使用する方法を使用して決定する必要があります。

UIInterfaceOrientationIsPortrait()には、UIInterfaceOrientationも使用できます。

+0

誰もこれに簡単な解決策を提案できますか? –

+0

問題は何ですか...? –

+0

例を次に示します。UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]) – tomwhipple

0

UIDeviceOrientationFaceUpとUIDeviceOrientationFaceDownは、デバイスがテーブルのように平らになっている場合の向きです。この場合、ポートレートと風景は意味をなさない。

+0

しかし、ポートレートモードとランドスケープモードで異なるレイアウトのアクションシートを表示するとします。ユーザーがDeviceOrientation FaceUpまたはFaceDownを使用しているときに、正しくレンダリングされるようにするにはどうすればよいですか? –

+0

誰でもデバイスオリエンテーションに基づいてUIActionsheetフレームを自動調整する方法を教えていただけますか? –

+0

自分で方向を調整する場合は、横または縦のいずれかを選択します。私は通常、FaceUpとFace downの両方を無視します。FaceUpのFaceUpに行くと、最後の向き(横向きまたは縦向き)がそのまま残ります。 – fsaint

3

私はこれが今の古い質問であることを認識していますが、答えを見てみると誰もが過度にぺだんでいます。他の誰かがこの問題を抱えている場合:

あなたの問題に対する答えは、受け入れられた方向のいずれかである二次変数を保持することです。

デバイスオリエンテーションの通知が来たら、受信方向を見て、受け入れ可能なものがあるかどうかを確認してください(ポートレート/ランドスケープはフェイスアップ/フェイスダウンではありません)。次にセカンダリ変数を更新してから、あなたの二次変数をオリエンテーションソースとして使用します。

これは、「最後に知られた良好な」向きに向きを固定する効果があります。

-1

オリエンテーションから見つける方法はありません。私は回避策を見つけました。

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 
} 
関連する問題