[解決済み】iOSのステータスバーの高さをプログラムで取得する方法
質問
現在、iPhone/iPadの上部にあるステータスバー(時間、バッテリー、ネットワーク接続)は、非retinaスクリーンでは20ピクセル、retinaスクリーンでは40ピクセルであることは知っていますが、私のアプリを将来的に保証するために、値をハードコーディングせずにこれを決定できるようにしたいのです。ステータスバーの高さをプログラム的に把握することは可能でしょうか?
解決方法は?
[UIApplication sharedApplication].statusBarFrame.size.height
. しかし、すべてのサイズはピクセル単位ではなくポイント単位であるため、ステータスバーの高さは常に20に等しくなります。
更新しました。 この回答が参考になると思われているところを見ると、詳しく説明したほうがよさそうですね。
ステータスバーの高さは、確かに、20.0f ポイントに相当します。 ただし 以下のような場合です。
-
でステータスバーが隠されています。
setStatusBarHidden:withAnimation:
メソッドを使用し、その高さは0.0fポイントに等しくなります。 - この@Antonが指摘したように、電話アプリケーション以外の着信時や録音セッション中のステータスバーの高さは40.0fポイントに相当します。
また、ステータスバーがビューの高さに影響するケースもあります。通常、ビューの高さは、指定された方向の画面寸法からステータスバーの高さを引いたものと同じです。しかし、ビューが表示された後にステータスバーをアニメーション化(表示または非表示)すると、ステータスバーはそのフレームを変更しますが、ビューは はしません。 そのため、ステータスバーのアニメーションの後(またはアニメーション中)に、手動でビューのサイズを変更する必要があります(ステータスバーの高さはアニメーションの開始時に最終値に設定されるため)。
アップデート2。
ユーザーインターフェースの向きのケースもありますね。ステータス・バーはオリエンテーションの値を尊重しないため、ステータス・バーの高さの値で
ポートレート
モードは
[UIApplication sharedApplication].statusBarFrame.size.height
(そう、アプリの info.plist が何と言おうと、デフォルトの向きは常にポートレートです)、一方
ランドスケープ
-
[UIApplication sharedApplication].statusBarFrame.size.width
. の外側にいるときにUIの現在の向きを決定する。
UIViewController
と
self.interfaceOrientation
が利用できない場合は
[UIApplication sharedApplication].statusBarOrientation
.
iOS7に対応したアップデートを行いました。
ステータスバーのビジュアルスタイルが変わっても、そのフレームは変わらずに存在し、動作も同じです。ステータス・バーについて唯一興味深い発見がありましたので、ご紹介します。
UINavigationBar
's
タイル状
の背景もステータスバーにタイル状に表示されるので、面白いデザイン効果を得たり、単にステータスバーに色をつけたりすることができます。これもまた、ステータスバーの高さには一切影響しません。
関連
-
[解決済み] シミュレータへのサービス接続の開始に失敗しました Xcode
-
[解決済み] 基本的なUIButtonをプログラムで作成するには?
-
[解決済み] selector' の引数が '@objc' メソッド、プロパティ、またはイニシャライザを参照していない
-
[解決済み] Swift 4 データが正しい形式でないため、読み取ることができませんでした。
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] iOSのステータスバーの文字色を変更する方法
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] iOSで画面の幅と高さを取得する方法は?
-
[解決済み】iOSアプリの名前を変更する方法は?
-
[解決済み】iOS 7: UITableViewがステータスバーの下に表示される
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 libc++abi.dylib: NSException 型のキャッチできない例外で終了する (lldb)
-
[解決済み] Xcode は、[バンドル ID] に一致する iOS App Store プロビジョニングプロファイルを見つけられませんでした。
-
[解決済み] シミュレーターiOS 13でダークモードを使用するには?
-
[解決済み] Xcodeで "No such module "というエラーが出るが、フレームワークはある
-
[解決済み] 指定されたホスト名を持つサーバーが見つからなかった
-
[解決済み] なぜibtoolはexit code 255で失敗したのでしょうか?
-
[解決済み] swift3におけるセレクタ
-
[解決済み] Xcode 4のBundle creator OS Type code ?
-
[解決済み] viewDidLoad()は何のためにあるのですか?[重複]する
-
[解決済み] あなたのリクエストはエラーを発生させました。[newNullResponse]?