アプリに白いステータスバーが必要です。このために、_View controller-based status bar appearance
_をNO
に設定し、_Status bar style
_をUIStatusBarStyleLightContent
に設定します。しかし今、私はいくつかのビューコントローラーでステータスバーを隠す必要があります。非表示にするには、_View controller-based status bar appearance
_をYES
に設定し、- (BOOL)prefersStatusBarHidden {return YES;}
を追加する必要があります。しかし、ステータスバーは現在黒です。 _View controller-based status bar appearance
_がYES
の場合は黒、NO
の場合は白です。だから問題は、白いステータスバーを設定して非表示にする方法です。
UPD:VC白いステータスバーが欲しいというコード(prefferdSTatusBarStyle
は呼び出されない)
VCステータスバーが非表示のコード
.plist設定
結果は黒いステータスバーで、一部のVCに隠れています
UPD2:
非推奨のメソッドを使用するのは悪いことですが、_[[UIApplication sharedApplication] setStatusBarHidden:YES];
_を使用すると、すべてが希望どおりに機能します。誰かがより良い解決策を持っているなら、私に知らせてください。
これはSwiftバージョン:
ステータスバーを非表示にしたり、外観を変更したりするには、ViewController自体の次のプロパティを上書きする必要があります
override var prefersStatusBarHidden: Bool{
return true
}
上はステータスバーを非表示にし、白に設定する場合は下を非表示にします。
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
PlistファイルにView controller-based status bar appearance
Boolプロパティを追加し、YESに設定します。
次に、ViewControllerに次のようなメソッドを追加します。
// TO MAKE STATUS BAR WHITE
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
// TO MAKE STATUS BAR BLACK
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
// RETURN TRUE TO HIDE AND FALSE TO SHOW STATUS BAR
override func prefersStatusBarHidden() -> Bool {
return true
}
Objective-Cの場合
- (BOOL)prefersStatusBarHidden {
return NO;
}
-(UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
冗長なコードを削除するには、BaseViewController
をUIViewController
のサブクラスとして作成し、そのクラスにメソッドを追加します。そして、変更が必要なクラスのメソッドをオーバーライドします。
ビューコントローラがUInavigationControllerに埋め込まれている場合は、このコードを
-(BOOL)prefreStatusBarHidden
{
return [self.navigationController prefersStatusBarHidden];
}