如何设置状态栏背景颜色iOS 7 [重复]

Posted

技术标签:

【中文标题】如何设置状态栏背景颜色iOS 7 [重复]【英文标题】:How to set Status bar background color iOS 7 [duplicate] 【发布时间】:2013-10-11 04:33:26 【问题描述】:

ios 6 外观...

我想像在 iOS 7 中显示状态栏一样

看到这个

但我的实际输出(重叠)

我尝试了以下逻辑

open your info.plist and set "View controller-based status bar appearance" = NO

它在我的代码中不起作用,,,

【问题讨论】:

@swt- 他们有很多关于 SO 的问题,你搜索过吗 【参考方案1】:

你必须做两件事。首先是打开你的info.plist并设置"View controller-based status bar appearance" = NO

第二个是将这行添加到application:didFinishLaunchingWithOptions

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
   
    self.window.clipsToBounds = YES;
    [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackOpaque];     

    UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
    if(orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
    
        self.window.frame =  CGRectMake(20, 0,self.window.frame.size.width-20,self.window.frame.size.height);
        self.window.bounds = CGRectMake(20, 0, self.window.frame.size.width, self.window.frame.size.height);
     else
    
        self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
        self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
    

【讨论】:

我的应用程序以横向模式运行。但是您的代码左右两侧出现黑条 更新了答案以支持两种方向。 但工作正常......但是当我旋转屏幕时,它不会根据屏幕方向改变 您应该注册 statusbarorientationchanged 通知并在那里使用相同的代码。我不能代替你写应用程序,我已经给你答案了,所以你应该明白它的意思并根据你的需要使用它。 实际上你必须添加到 info.plist 的关键是: UIViewControllerBasedStatusBarAppearance = NO【参考方案2】:

阅读这篇文章:http://www.appcoda.com/customize-navigation-status-bar-ios-7/

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]  

[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x067AB5)];

【讨论】:

对于那些将图像放在 UINavigationBar 上的开发人员来说,这是一个很好的链接。 遗憾的是,我的 iPad 应用程序并没有做太多事情。不过链接很好 由于某种原因这对我不起作用,故事板,ios7。将该行添加到 AppDelegate didFinishLaunching【参考方案3】:

将框架向下移动 20 像素。您可以尝试在 ViewWillappear 或 DidAppear 中编写此内容

CGRect frame = self.view.frame;
frame.origin.y = 20;

if (self.view.frame.size.height == 1024 ||   self.view.frame.size.height == 768)

    frame.size.height -= 20;

self.view.frame = frame;  

现在在 applicationDidFinishLaunching 中将窗口的背景颜色设置为黑色,并将状态栏字体设置为白色 (StatusBarContentLight)

请记住我的建议不是完美的解决方案,而是可以很好地工作的修复程序。当应用更改其方向时也使用相同的代码(ShouldAutorotate)

【讨论】:

以上是关于如何设置状态栏背景颜色iOS 7 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 7 上更改状态栏背景颜色和文本颜色?

如何在iOS 7上更改状态栏背景颜色和文本颜色? Warif Akhand Rishi

如何在启动阶段设置状态栏的背景颜色[重复]

如何在 iOS 7 上将状态栏内容颜色设置为白色

如何在 React Native 中设置 iOS 状态栏背景颜色?

iOS hidesBarsOnSwipe 状态栏背景颜色