我知道可以删除状态栏,但如果将状态栏设置为隐藏状态,框架会向上移动状态栏的高度。因此,以下代码:
[UIApplication sharedApplication].statusBarHidden = YES;
仅仅隐藏状态栏的文本是不够的。我最终尝试在这里完成的工作类似于Gmail应用程序,其中显示侧边菜单时,状态栏文本被隐藏,然后一旦做出选择,框架将恢复正常状态栏文本显示。
This question显示了如何为状态栏的隐藏设置动画,但结果是整个窗口向上移动了状态栏的高度。我试图避免这种情况发生。
答案 0 :(得分:8)
Objective-C版本:
[AppDelegate instance].window.windowLevel = UIWindowLevelStatusBar;
Swift版本:
AppDelegate().window!.windowLevel = UIWindowLevelStatusBar
答案 1 :(得分:2)
这应该这样做。然而,这有点像黑客:
NSString *key = [[NSString alloc] initWithData:[NSData dataWithBytes:(unsigned char []){0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x61, 0x72} length:9] encoding:NSASCIIStringEncoding];
id object = [UIApplication sharedApplication];
UIView *statusBar;
if ([object respondsToSelector:NSSelectorFromString(key)]) {
statusBar = [object valueForKey:key];
}
[UIView animateWithDuration:0.3
animations:^{
statusBar.alpha = 0.0f;
}
];
答案 2 :(得分:1)
以某种方式在我的代码结果中应用以下代码,同时展开可选的
AppDelegate().window!.windowLevel = UIWindowLevelStatusBar
我使用以下方法使状态栏文本隐藏:
UIApplication.shared.delegate?.window!!.windowLevel = UIWindowLevelStatusBar
要将状态栏重置为默认值并显示文字:
UIApplication.shared.delegate?.window!!.windowLevel = UIWindowLevelNormal