在状态栏iOS 7上方添加UIView横幅

时间:2014-03-07 04:24:09

标签: ios objective-c ios7 ios7-statusbar

我正在尝试在收到应用内推送通知时在状态栏上方添加横幅。从我一直在阅读的内容看来,动态更改iOS 7中状态栏样式的唯一方法是将UIViewControllerBasedStatusBarAppearance设置为NO。这不仅非常烦人,我必须将所有不同的视图控制器prefersStatusBarHidden更改为[UIApplication sharedApplication].statusBarHidden,但它也没有提供我正在寻找的效果。

当横幅从顶部滑动时,我仍然希望状态栏提供的20个空间保留,但状态栏内容将消失,直到横幅向后滑动。有没有办法做到这一点或在状态栏上方添加子视图或窗口?

基本上我希望这样做:

Facebook Messenger push banner

3 个答案:

答案 0 :(得分:44)

将视图控制器置于状态栏上方:

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

将视图控制器置于状态栏后面:

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

答案 1 :(得分:34)

创建一个新窗口并将横幅视图添加到该窗口。当您需要展示横幅广告时,您可以设置yourwindow.hidden = NO;您可以进一步添加动画以展示它并将其关闭yourwindow.hidden = YES;

这里的关键是设置yourwindow.windowLevel = UIWindowLevelStatusBar+1;

这将确保您的横幅广告视图和yourwindow始终显示在状态栏上方。

随时提出有关上述任何问题的问题。

答案 2 :(得分:4)

在状态栏上方添加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

}