ステータスバーをiOS 8の両方の方向に表示する必要があります。 iOS 7では適切に表示されています。
navigationController.isNavigationBarHidden
はNOを返します。
IOS 8がこれを行うのはなぜですか?
これを試してください
didRotateFromInterfaceOrientation
に以下のコードを追加します
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
[〜#〜] edit [〜#〜]
すべてのビューコントローラーにコードを書き込む必要はありません
Set View controller-based status bar appearance
をNO
のplist
に追加し、ルートビューコントローラーのviewDidLoad
に以下のコードを追加します
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
デモプロジェクト
https://www.dropbox.com/s/uumneidk4wom5md/demoStatusBar.zip?dl=
IOS 8で横向きモードでステータスバーを表示するには、次の方法を試してください
- (BOOL)prefersStatusBarHidden {
return NO;
}
スイフト版
override func prefersStatusBarHidden() -> Bool {
return false
}
Swift 3、Xcode 8、iOS 10、/ * ViewController.Swift * /
override var prefersStatusBarHidden: Bool {
return false
}
Jageenのソリューションはおそらく最も良いものです。たった1つの小さな変更、つまりviewDidLoad
を使用する代わりに、application:didFinishLaunchingWithOptions:
を使用することをお勧めします。
基本的には2段階のプロセスです。
1)。プロジェクトのInfo.plistファイルで、「コントローラーベースのステータスバーの外観を表示」をNOに設定します。
2)。次のコードを使用して、application:didFinishLaunchingWithOptions:
でステータスバーの非表示ステータスを強制的にNOにします。
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
そして、出来上がり!
注:上記のsetStatusBarHidden:withAnimation
ステートメントの両方を使用して、ステータスバーを強制的に非表示状態にすることが重要です。
これは問題ではなく、iOS 8の機能です。iOS8では、横向きモードではステータスバーが非表示になります。Appleのアプリケーションも同じ動作をします。
私は同じ問題を抱えていました!これをviewDidLoadに依存させることで修正
[self setNeedsStatusBarAppearanceUpdate];
そしてこれは実装自体に
-(BOOL)prefersStatusBarHidden{
return NO;
}
彼らは、私たちにもっと多くの仕事を与えることで、私たちを有能に雇っています。
または...
彼らは、ビットが以前よりも多くのスペースを占有する原因となる他の変更を加えました。 iOS 7と「トップレイアウトバーガイド」などの出現により、スワイプダウン画面でステータスバーを簡単に利用できるようになり、ステータスバーのスペースが使用可能になり、多くの人がステータスバーを予測するその他の小さなヒントUIの標準部分として段階的に廃止されます。
IOS 8でさまざまなサイズのコードを簡単にコーディングできるように変更したため、新しいデバイスサイズについてもかなりの話題があります。
それは純粋な憶測ですが、iOS 8ではランドスケープステータスバーが表示されるとは思いません。
Swift
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.setStatusBarHidden(true, with: .none)
UIApplication.shared.setStatusBarHidden(false, with: .none)
///
}
内部にInfo.plist
この:
UIViewControllerBasedStatusBarAppearance
ブール値NO
Swift(2017年6月2日現在)
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear()
self.setNeedsStatusBarAppearanceUpdate()
}
override var prefersStatusBarHidden : Bool {
return false
}
上記の手順に従い、左右のランドスケープが両方とも有効になっていることを確認することで修正しました。
プロジェクト/ターゲット/展開情報の下