为啥navigationBar和view之间显示黑屏

Posted

技术标签:

【中文标题】为啥navigationBar和view之间显示黑屏【英文标题】:Why black screen display between navigationBar and view为什么navigationBar和view之间显示黑屏 【发布时间】:2014-02-11 07:16:57 【问题描述】:

在我的项目中,导航控制器中嵌入了两个视图控制器(第一个和第二个),并且半透明设置为 NO。但我在 First ViewController 中使用了提示符。

我使用了自动布局。如果您知道使用和不使用 AutoLayout 的解决方案,我会非常高兴

当我推送到第二个视图控制器时。我在导航栏下出现了一些黑屏

我尝试了很多概念,但都有所帮助。

帮助我如何解决。

注意:

不要说 set Translucent 是 YES。我知道如果我设置是,它会完美运行。但我需要用 Translucent 实现是 NO

更新 1:图像已更新。

【问题讨论】:

那么如果黑色区域在您的导航栏下方.. 可能您的蓝色视图太短了? 就是这样。我知道。我想为什么会来 为什么你的导航栏在第一个VC里那么大? ... 我在导航栏中使用了提示 我试图重现您的错误并在我的控制台中收到一条错误消息。在谷歌搜索该错误消息后,我发现了以下线程:***.com/questions/19103071/… 似乎它已在 ios7.1 中修复 【参考方案1】:

我已关闭自动布局 - 并找到以下解决方案

ViewController 优先

-(void)viewWillDisappear:(BOOL)animated

     self.view.backgroundColor = [UIColor whiteColor];


第二个视图控制器

 -(void)viewWillLayoutSubviews
 
    AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
    appDelegate.window.backgroundColor = [UIColor whiteColor];
    self.myView.frame = CGRectMake(0.0, 64.0, 320.0, 504.0);

 

我希望这会有所帮助,因为自动布局也可以正常工作

【讨论】:

我知道我尝试过的这种方法。我需要优化的方式。不需要硬编码任何值【参考方案2】:

我使用了这个代码。但我不会有任何硬编码解决方案。如果您知道任何其他解决方案,请分享

[UIView animateWithDuration:0.3 animations:^
        self.view.frame=CGRectMake(0, self.navigationController.navigationBar.frame.size.height+20, 320, 504);
];

【讨论】:

【参考方案3】:

尝试设置您的navigationView 的backgroundColor

【讨论】:

以上是关于为啥navigationBar和view之间显示黑屏的主要内容,如果未能解决你的问题,请参考以下文章

如何Android中自定义Navigationbar

Android 截屏 Surface View 显示黑屏

为啥Android WebView会显示黑屏?

LaTeX加黑中文整段字都加黑了为啥?

打开Tiff文件为啥显示为黑白色

为啥使用故事板推送视图控制器显示黑屏