【发布时间】:2011-01-06 01:07:29
【问题描述】:
当我用 UIView 覆盖所有屏幕时,如何用 UIView 覆盖 UIStatusBar?
【问题讨论】:
标签: ios objective-c uiview screen uistatusbar
当我用 UIView 覆盖所有屏幕时,如何用 UIView 覆盖 UIStatusBar?
【问题讨论】:
标签: ios objective-c uiview screen uistatusbar
我也在为如何做到这一点而奋斗了很长时间!终于弄明白了 :) 关键是将新窗口的 windowLevel 设置为非常高,以便它位于所有其他窗口/视图/状态栏等之上:
UIWindow *keyWin = [UIApplication sharedApplication].keyWindow;
UIWindow *hudWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0.0f, 0.0f, keyWin.frame.size.width, keyWin.frame.size.height)];
hudWindow.backgroundColor = [UIColor blackColor];
hudWindow.alpha = 0.60;
[hudWindow setWindowLevel:10000.0f];
[hudWindow setHidden:NO];
享受吧!
【讨论】:
keyWindow,则该值可能为nil。最好使用[[UIScreen mainScreen] bounds]来获取窗框。
你能做的最好的事情是隐藏状态栏:
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]
并在需要时再次显示。
您基本上可以随时removeFromSuperview 删除视图。
【讨论】:
setStatusBarHidden:withAnimation:。
如果您尝试创建类似UIAlertView 的效果,我认为您无法做到这一点。您可以通过 http://bugreporter.apple.com 向 Apple 提出功能增强请求。
【讨论】:
很好,但我做了这两个更改。给 UIWindowLevel 加 1.0 还是会隐藏状态栏,我也不知道为什么。
self.windowLevel = UIWindowLevelStatusBar+2.0f;
self.userInteractionEnabled = NO;
将状态栏 userInteractionEnabled 属性设置为 NO 将确保当有人点击此状态栏时,您的滚动视图将滚动到顶部。
【讨论】: