ios 7中的黑色状态栏 - 次要问题
Posted
技术标签:
【中文标题】ios 7中的黑色状态栏 - 次要问题【英文标题】:Black status bar in ios 7 - secondary issue 【发布时间】:2014-08-05 06:26:31 【问题描述】:我知道这个问题已经被问过好几次了,我看到的解决方案非常有帮助。但由于我有 2 个相互冲突的要求,我有点束手无策,希望能得到一些帮助。
所以这里是要求:
-
我们有多个视图控制器,其中只有一个需要全屏(顶部没有状态栏)。
其他视图控制器需要显示黑色状态栏和深灰色导航栏
First View 控制器嵌入在导航控制器中。
按照其他一些帖子中的建议,我做了以下操作
-
将 UIViewControllerBasedStatusBarAppearance 设置为 NO
在应用委托中添加了此代码
CGRect frame = [[UIScreen mainScreen] bounds];
self.window.frame = CGRectMake(0,20,frame.size.width, frame.size.height-20);
self.window.bounds = self.window.frame;
如果我只停留在那些有状态栏的视图控制器中,它就可以正常工作。
当我打开全屏视图控制器时,VC 在顶部被切断,如图所示。
此外,当我回到主视图控制器时,现在它也向上移动了,并且标题栏是显示状态栏的位置。
我试图通过重置 view.frame 并请求布局来将视图向下推,但它没有生效。
关于如何解决此问题的任何建议?
【问题讨论】:
【参考方案1】:不要更改应用委托中的 self.window.bounds。相反,在您的视图控制器中尝试这样的事情:
-(void)viewWillAppear:(BOOL)animated
[self.navigationController setNavigationBarHidden:YES/NO animated:YES];
[self setNeedsStatusBarAppearanceUpdate]; // For showing/hiding status bar
[super viewWillAppear:animated];
- (BOOL)prefersStatusBarHidden
return YES/NO;
根据是否有状态栏和导航栏,ViewDidLoad中的view会有不同的frame。
【讨论】:
嗨,感谢@pallakg 的回复,但它不起作用。出于某种原因,我似乎无法在初始启动后打开或关闭它以上是关于ios 7中的黑色状态栏 - 次要问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在iOS 7上更改状态栏背景颜色和文本颜色? Warif Akhand Rishi