2011-06-23 16 views
3

すべて、
私は画面の向きをロックしたとき、私は、画面の向きを取得するために[[UIDevice currentDevice]の向き]を使いたいが、それは常にそう、質問は私が本当のデバイスの向きを得ることができる方法であるUIDeviceOrientationPortraitを返します。
ありがとうございます。どのようにして実際のデバイスの向きを得ることができますか?

+0

これはシミュレータまたはデバイスでテストしましたか?私はこれが実際のデバイスでのみ正確な結果を与えると信じています。 –

+0

はい、私はこれをデバイス上でテストします –

+0

このリンクをたどるhttp://stackoverflow.com/questions/930075/uidevice-orientation –

答えて

0

シミュレータでテストを行っている場合は、正確な向きの値を返してもシミュレータがひどいことに注意してください。デバイスのテスト。

+0

はい、私は自分のiphone4でテストしますが、結果は以前と同じです。 –

0

the documentationのように、最初にオリエンテーション通知の生成をオンにする必要があります。

あなたはコールする必要があります。

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 

その後、あなたは、デバイスの向きを確認することができます。バッテリーを節約するために、方向を知っていることをデバイスに伝える必要があります。あなたは呼び出すことによってそれを行う:

[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; 

個人的に、私はusing the status bar's orientationとのより良い運を持っていました。これは、(デバイスが表面上に平坦な場合など)、デバイスの向きが「Landscape」または「Portrait」にならないことがあるためです。

+0

[[UIDevice currentDevice] orientation]は、ユーザーがデバイスの方向をSpringboardからロックしている場合は機能しません。 orientationは常に最後の値であり、変更の通知はありません。 – Jeff

0

あなたが経由オリエンテーションの通知を有効にしていることを確認します:それはまだ動作しない場合は、あなたもあなたのUIが回転している場合は現在の向きを(把握するために、ステータスバーを使用することができます

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

)経由:

[[UIApplication sharedApplication] statusBarOrientation];

関連する問題