如果在应用程序委托中设置,则从单个屏幕中删除状态栏颜色

Posted

技术标签:

【中文标题】如果在应用程序委托中设置,则从单个屏幕中删除状态栏颜色【英文标题】:Remove status bar color from a single screen if its set in app delegate 【发布时间】:2017-10-18 03:52:12 【问题描述】:

我在 appdelegate 类中设置状态栏颜色如下。

- (void)transitionToViewController:(UIViewController *)viewController
                    withTransition:(UIViewAnimationOptions)transition

    self.window.rootViewController = viewController;

    //SET STATUS BAR COLOR
    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
    
        UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, 20)];
        view.backgroundColor= [UIColor colorWithRed:0.96 green:0.96 blue:0.96 alpha:1.0];
        [self.window.rootViewController.view addSubview:view];
    

当我尝试从单个屏幕中删除它时,我失败了。它保留了我在 appdelegate 中设置的背景颜色,但删除了文本。我也想删除背景。

这是我尝试删除状态栏的方法:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

状态栏如下所示:

【问题讨论】:

试试***.com/questions/8326804/… Unable to hide statusbar in single UIViewController的可能重复 【参考方案1】:

在 info.plist 中添加这个基于 View 控制器的状态栏外观设置 YES

View controller-based status bar appearance = YES

基于视图控制器的隐藏集

在视图控制器中添加方法。

目标-C

- (BOOL)prefersStatusBarHidden 
    return YES;

斯威夫特

override func prefersStatusBarHidden() -> Bool 
    return true

【讨论】:

prefersStatusBarHidden 甚至没有被调用。我添加到 plist。 请您在设备上试用一下 还是一样。它没有被调用。 ok..在你的 Appdelegate 中设置 application.setStatusBarHidden(true, with: .none) 然后尝试是否被调用 我没听懂。【参考方案2】:

将以下内容添加到您的 Info.plist:

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

这也有效(ios7+):

override func prefersStatusBarHidden() -> Bool 
    return true

您还需要调用:

setNeedsStatusBarAppearanceUpdate()

在说 viewDidLoad()。

【讨论】:

objective c 版本是什么? -(BOOL)prefersStatusBarHidden 返回 YES; [self setNeedsStatusBarAppearanceUpdate]; 这没有帮助。因为它对整个应用程序隐藏了 uistatusbar。 你只需要在其他视图控制器中设置 No -(BOOL)prefersStatusBarHidden return NO; [self setNeedsStatusBarAppearanceUpdate]; 浏览量超过 50 次,所以我想这不是最好的方法。

以上是关于如果在应用程序委托中设置,则从单个屏幕中删除状态栏颜色的主要内容,如果未能解决你的问题,请参考以下文章

在 AppDelegate 中设置初始视图控制器时完全黑屏

在 OSX Lion 中设置单个桌面的背景图像

如何在布局/样式 XML 中设置状态栏色调颜色?

通过 iChatAgent 以编程方式在 iChat 中设置状态

如何在 Swift 3 中设置状态栏样式

模态视图的 iOS7 状态栏字体颜色