すべて、
画面の向きをロックしたときに、[[UIDevice currentDevice] orientation]を使用して画面の向きを取得したいのですが、常にUIDeviceOrientationPortraitを返すので、問題は実際のデバイスの向きを取得する方法です。
どうもありがとうございます。
4 に答える
シミュレーターでテストしている場合、シミュレーターは正確な向きの値を返すのが苦手であることに注意してください。デバイスでテストします。
ドキュメントに従って、最初に方向通知の生成をオンにする必要があります。
電話する必要があります:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
次に、デバイスの向きを確認できます。バッテリーを節約するために、方向の取得が完了したことをデバイスに伝える必要があります。これを行うには、次のように呼び出します。
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
個人的には、ステータス バーの向きを使用したほうがうまくいきました。これは、デバイスの向きが「横向き」または「縦向き」にならない場合があるためです (たとえば、デバイスが表面上で平らな場合)。
別の解決策は、CoreMotion ライブラリから方向を検出することです。Portrait Orientation Lock: On 時のバグを修正します。その記事を参照してください: http://codrspace.com/yuvirajsinh/device-orientation-detection-using-coremotion/
次の方法でオリエンテーション通知を有効にしていることを確認してください。
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
それでもうまくいかない場合は、ステータス バーを使用して現在の向きを確認することもできます (UI が回転している場合)。
[[UIApplication sharedApplication] statusBarOrientation];