デバイスの向きではなく画面の向きを決定する 質問する

デバイスの向きではなく画面の向きを決定する 質問する

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

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

親ビューコントローラの方向を使用しようとしました:

parentController.interfaceOrientation;

残念ながら、 が返されましたUIDeviceOrientationUnknown。この問題に直面した他の人を SO と Google で検索しました。Apple が方向性としてLandscapeLeft/Rightと以外のものを用意しているというのは、私にはばかげているように思えます。PortraitUp/Down

本当に必要なのはデバイスではなくアプリの方向性です。これらは時々矛盾す​​るからです。何かアドバイスはありますか?

ベストアンサー1

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

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

試してみるのもいいでしょうUIデバイスの方向が有効

これらはアプリの向きのみを返しますが、デバイスの向きと同じではない可能性があります。

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

[[UIApplication sharedApplication] statusBarOrientation]

おすすめ記事