iOS 7淡入淡出状态栏文本?

时间:2013-12-22 17:29:42

标签: ios objective-c cocoa-touch ios7

我知道可以删除状态栏,但如果将状态栏设置为隐藏状态,框架会向上移动状态栏的高度。因此,以下代码:

[UIApplication sharedApplication].statusBarHidden = YES;

仅仅隐藏状态栏的文本是不够的。我最终尝试在这里完成的工作类似于Gmail应用程序,其中显示侧边菜单时,状态栏文本被隐藏,然后一旦做出选择,框架将恢复正常状态栏文本显示。

This question显示了如何为状态栏的隐藏设置动画,但结果是整个窗口向上移动了状态栏的高度。我试图避免这种情况发生。

3 个答案:

答案 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