8

ステータスバーの高さを取得するために次のコードを使用しています。

[UIApplication sharedApplication].statusBarFrame.size.height

これはポートレート モードでは完全に機能し、期待値 (20.0) を返しますが、アプリケーションがランドスケープ モードの場合、予期しない値 1024.0 を取得します !!

誰かが私のためにこれに光を当てることができますか?

iOS バージョン 6.1.3

XCode バージョン 4.6.2

4

6 に答える 6

13

向きや座標に関連する問題を忘れたい場合は、これを使用してください。

float statusBarHeight = MIN([UIApplication sharedApplication].statusBarFrame.size.height, [UIApplication sharedApplication].statusBarFrame.size.width);
于 2013-10-28T00:11:45.410 に答える
10

横向きを使用する必要がある場合があります[UIApplication sharedApplication].statusBarFrame.size.width[[UIScreen mainScreen] applicationFrame]横向きで切り替えられた値を与えるのと同じ

于 2013-05-16T15:13:32.957 に答える
1

向きを確認する必要はありません。フレームを変換するための UIView 便利なメソッドを使用するだけです。

CGRect statusBarFrame = [self.view convertRect:[[UIApplication sharedApplication] statusBarFrame] fromView:self.view.window];
于 2014-09-17T09:26:21.580 に答える
1

アプリのどの時点でこれを取得しますか? 初めて実行する場合は、.xib ファイルがプロジェクト内でどの方向にあるかを確認してください。それらが縦向きの場合、アプリが横向きで起動されても、向きを判断する時間がなく、最前面のビュー コントローラー ビューを作成する .xib の寸法を使用します。

iOS 6 では、回転処理と向きの検出が iOS 5 以前から大幅に変更されました。これらの値をステータスバーの向きに依存することはできなくなったと思います。

これは役立つかもしれません

于 2013-05-16T15:18:27.933 に答える
-1

クリーン コードをビルドし、orientationChangeメソッドが呼び出されるかどうかを確認します。iOSのバージョンも明記してください

于 2013-05-16T14:40:48.327 に答える