20

この[[UIDevice currentDevice] orientation]メソッドは、縦向きと横向き以外の多くの向きを返します。返された方向が「有効」かどうかを確認することはよく知っていますが、残念ながら、実行するメソッドを決定するためにアプリで特定の方向が必要なときに、返された方向が「有効」でない場合、どのメソッドが正しいかを知る方法がありません。適切な。

私はこれに対して多くの解決策を試みましたが、今のところ解決できた唯一のことは、向きが正しいかどうかを確認することLandscapeLeftLandscapeRightあり、そうでない場合は画面が縦向きであると仮定します. 残念ながら、デバイスが上向きで画面が横向きの場合、これは当てはまりません。

親View Controllerの向きを使用しようとしました:

parentController.interfaceOrientation;

残念ながら戻ってきUIDeviceOrientationUnknownました。SO と Google で、この問題に直面した他の人を探します。Apple が自分たちの方向性 以外の何かを持っLandscapeLeft/Rightているというのは、私にはばかげているように思えます。PortraitUp/Down

私が本当に必要としているのは、デバイスではなく APPS の向きです。何かアドバイス?

4

1 に答える 1

49

UIInterfaceOrientationPortrait/を使ってみましたUIInterfaceOrientationLandscapeか? 私は通常、これらの方法を使用してかなり良い結果を得ています:

if(UIInterfaceOrientationIsPortrait(viewController.interfaceOrientation)) {
    //do portrait work
} else if(UIInterfaceOrientationIsLandscape(viewController.interfaceOrientation)){
    //do landscape work
}

UIDeviceOrientationIsValidInterfaceOrientationを試すこともできます。

これらはアプリの向きのみを返すため、デバイスの向きとは異なる場合があります。

それらが機能しない場合は、次のことも試してください。

[[UIApplication sharedApplication] statusBarOrientation]
于 2011-05-16T19:24:19.123 に答える