アプリ内のプッシュ通知を受信したときに、ステータスバーの上にバナーを追加しようとしています。私が読んでいることから、iOS 7でステータスバーのスタイルを動的に変更する唯一の方法は、UIViewControllerBasedStatusBarAppearance
をNO
に設定することです。これは、すべての異なるビューコントローラーをprefersStatusBarHidden
から[UIApplication sharedApplication].statusBarHidden
に変更する必要があるだけでなく、探している効果も得られません。
バナーが上からスライドするときでも、ステータスバーが提供する20ポイントのスペースを維持したいのですが、ステータスバーのコンテンツは、バナーが上にスライドするまで消えます。これを行う方法、またはステータスバーの上にサブビューまたはウィンドウを追加する方法はありますか?
基本的に私はこれをしようとしています:
新しいウィンドウを作成し、バナービューをそのウィンドウに追加します。バナーを表示する必要がある場合は、yourwindow.hidden = NO;
アニメーションをさらに追加して、表示および非表示にすることができますyourwindow.hidden = YES;
。
ここで重要なのは、設定yourwindow.windowLevel = UIWindowLevelStatusBar+1;
これにより、バナービューとyourwindow
が常にステータスバーの上に表示されるようになります。
上記のいずれかについてお気軽に質問してください。
ビューコントローラをステータスバーの上に配置するには:
[[[[UIApplication sharedApplication] delegate] window] setWindowLevel:UIWindowLevelStatusBar+1];
ビューコントローラをステータスバーの後ろに配置するには:
[[[[UIApplication sharedApplication] delegate] window] setWindowLevel:UIWindowLevelNormal];
ステータスバーの上にUIViewバナーを追加する-Swift4
func showBannerView(bannerView:UIView){
let window = UIApplication.shared.keyWindow!
window.addSubview(bannerView)
window.windowLevel = UIWindowLevelStatusBar+1
}
func removeBannerView(bannerView:UIView){
bannerView.removeFromSuperview()
let window = UIApplication.shared.keyWindow!
window.windowLevel = UIWindowLevelStatusBar - 1
}