web-dev-qa-db-ja.com

ステータスバーiOS 7の上にUIViewバナーを追加する

アプリ内のプッシュ通知を受信したときに、ステータスバーの上にバナーを追加しようとしています。私が読んでいることから、iOS 7でステータスバーのスタイルを動的に変更する唯一の方法は、UIViewControllerBasedStatusBarAppearanceNOに設定することです。これは、すべての異なるビューコントローラーをprefersStatusBarHiddenから[UIApplication sharedApplication].statusBarHiddenに変更する必要があるだけでなく、探している効果も得られません。

バナーが上からスライドするときでも、ステータスバーが提供する20ポイントのスペースを維持したいのですが、ステータスバーのコンテンツは、バナーが上にスライドするまで消えます。これを行う方法、またはステータスバーの上にサブビューまたはウィンドウを追加する方法はありますか?

基本的に私はこれをしようとしています:

Facebook Messenger Push banner

24
Mike V

新しいウィンドウを作成し、バナービューをそのウィンドウに追加します。バナーを表示する必要がある場合は、yourwindow.hidden = NO;アニメーションをさらに追加して、表示および非表示にすることができますyourwindow.hidden = YES;

ここで重要なのは、設定yourwindow.windowLevel = UIWindowLevelStatusBar+1;

これにより、バナービューとyourwindowが常にステータスバーの上に表示されるようになります。

上記のいずれかについてお気軽に質問してください。

33
dezinezync

ビューコントローラをステータスバーの上に配置するには:

[[[[UIApplication sharedApplication] delegate] window] setWindowLevel:UIWindowLevelStatusBar+1];

ビューコントローラをステータスバーの後ろに配置するには:

[[[[UIApplication sharedApplication] delegate] window] setWindowLevel:UIWindowLevelNormal];
46
Nico

ステータスバーの上に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

} 
4
Thomas Paul