【问题标题】:iOS 7 Fade status bar text in and out?iOS 7 淡入淡出状态栏文本?
【发布时间】:2014-01-10 23:51:59
【问题描述】:

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

[UIApplication sharedApplication].statusBarHidden = YES;

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

This question 展示了如何动画隐藏状态栏,但结果是整个窗口向上移动了状态栏的高度。我正在努力避免这种情况发生。

【问题讨论】:

  • 在 .plist 中将“基于控制器的状态栏外观”设置为 NO 并尝试使用淡入淡出动画

标签: ios objective-c cocoa-touch ios7


【解决方案1】:

Objective-C 版本:

[AppDelegate instance].window.windowLevel = UIWindowLevelStatusBar;

Swift 版本:

AppDelegate().window!.windowLevel = UIWindowLevelStatusBar

【讨论】:

    【解决方案2】:

    应该这样做。然而,这有点像 hack:

    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; 
                         }
    ];
    

    【讨论】:

    • (unsigned char []){0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x61, 0x72} ... 为什么不只是 "statusBar" 或其他任何 ASCII 字符?猜它说状态栏.. 0x74 = 0x73 + 1t = s + 1
    • 因为这绕过了 Apple 的检查。
    • 糟糕的解决方案,无论是否绕过 Apple 的检查。 iOS7.1会发生什么? 7.2? 8.0?
    • 您的意思是这个解决方案是基于绕过 Apple 对字符串 statusBar 的静态分析检查?可怕的解决方案!我投反对票不是因为它必然是一个错误的答案,而是不是未来的证据,我不能提倡它。
    【解决方案3】:

    在我的 nil 代码结果中应用以下代码,同时展开可选

    AppDelegate().window!.windowLevel = UIWindowLevelStatusBar
    

    我使用以下方法来隐藏状态栏文本:

    UIApplication.shared.delegate?.window!!.windowLevel = UIWindowLevelStatusBar 
    

    并将状态栏重置为默认值并显示文本:

    UIApplication.shared.delegate?.window!!.windowLevel = UIWindowLevelNormal
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多