如何在导航栏动画期间删除不需要的黑色区域。屏幕截图

Posted

技术标签:

【中文标题】如何在导航栏动画期间删除不需要的黑色区域。屏幕截图【英文标题】:How to remove unwanted black area during navigation bar animation. Screen shots 【发布时间】:2013-10-28 12:10:01 【问题描述】:

我有一个视图控制器,其中导航栏是透明的。我的下一个视图是表格视图,其中导航栏是白色的。

为了阻止不需要的动画继续,我在表格视图的“viewDidDissapear”中将导航栏设置为透明。不幸的是,当我向后导航时,这给我留下了下面的图像(向前导航时更糟)。有谁知道如何摆脱黑色区域?

-(void)viewWillDisappear:(BOOL)animated     


[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                                              forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;


[super viewWillDisappear:NO];


这是我在表格视图控制器中使用的代码。

【问题讨论】:

【参考方案1】:

正如你所说,不需要的动画,。我建议您在 tableViewController 的 (presentViewController 和 dismissViewController) 中都设置 (animated:NO) ......并在两个控制器的 viewWillAppear 中设置导航栏.. 我认为最好也最简单..

【讨论】:

感谢您的回答,您能给我一些关于呈现和关闭视图控制器的代码吗?这不是我以前做过的事情(总是依靠导航控制器为我做这件事)。我应该在 tableViewController 的哪个位置调用它们? 不,不要混淆......如果你使用导航控制器,他们的意思是pushViewController和popViewController......只需设置animated:NO给他们 通知我所做的更改或标记为答案,如果它为您完成了这项工作:) 嗨尼克,我想我今天过得很慢 - 我真的很困惑。我尝试了各种解决方法,但似乎没有任何效果。我真的很抱歉这么愚蠢,但你能再详细说明一下吗? 添加 self.navigationController.navigationBar.translucent = NO;在视图中会出现

以上是关于如何在导航栏动画期间删除不需要的黑色区域。屏幕截图的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 如何在 2 个视图控制器之间导航时删除黑色导航栏

删除导航栏上方不必要的空白

在使用 hidesBottomBarWhenPushed 进行推送动画期间工具栏定位不正确

视图控制器顶部的黑色空间

导航栏在动画期间不反映新的文本属性到前一个视图控制器

如何在启动动画期间更改 iOS 应用程序图标背景颜色?