我正在尝试在收到应用内推送通知时在状态栏上方添加横幅。从我一直在阅读的内容看来,动态更改iOS 7中状态栏样式的唯一方法是将UIViewControllerBasedStatusBarAppearance
设置为NO
。这不仅非常烦人,我必须将所有不同的视图控制器prefersStatusBarHidden
更改为[UIApplication sharedApplication].statusBarHidden
,但它也没有提供我正在寻找的效果。
当横幅从顶部滑动时,我仍然希望状态栏提供的20个空间保留,但状态栏内容将消失,直到横幅向后滑动。有没有办法做到这一点或在状态栏上方添加子视图或窗口?
基本上我希望这样做:
答案 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
}