推动视图控制器时导航栏上不需要的阴影

最后发布: 2015-05-28 14:14:16


问题

简短问题: 在此输入图像描述

如何在推动视图控制器时删除蓝色圆圈中的阴影?

长问题:我的应用程序就像facebook。 有一个NewsFeed视图,详细信息发布视图和页面视图。 这是我的界面构建器中的内容: 界面构建器

HomeViewController是NewsFeed视图, DetailPostViewController是Detail Page View, FirstViewController是Page View。 HomeViewController嵌入到UINavigationControllerUINavigationController嵌入到UITabBarController

当我从FirstViewController推送到DetailPostViewController时,这是完全正常的。 (注意我不使用segue来推送,但是故事板ID) 在此输入图像描述

但是当我从DetailPostViewController推送到FirstViewController ,导航栏上有一个奇怪的阴影,比如重叠。 但我不希望这样。 (不使用segue,但是故事板ID) 在此输入图像描述

这是我推送到FirstViewController代码

var vc = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as! FirstViewController
self.navigationController?.pushViewController(vc, animated: true)

如何从DetailPostViewControllerFirstViewController的推送看起来正常? 我尝试使用segue但它没有用。 尝试了这么久但仍然没有运气。 谢谢。

ios iphone swift cocoa-touch uinavigationcontroller
回答

我遇到过同样的问题。 在我的例子中,我使用inputAccessoryView属性在UIViewController底部显示我的自定义工具栏

事实证明,问题是因为我的视图控制器是动画开头的第一个响应者。

我认为你应该在执行推送时尝试使用navigationController?.setToolbarHidden(true, animated: true) 或者在推动动画之前找到另一种隐藏工具栏的方法。

对我来说,这个代码修复了问题,万一有人有类似的问题

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    resignFirstResponder()
}


回答

我认为你在两个实例中都得到了影子,如果你打算使用内置的过渡,那么你无能为力。 iOS正在将其添加到视图层次结构中,作为过渡的一部分。

您可以尝试使用自定义转换: http//www.objc.io/issue-12/custom-container-view-controller-transitions.html 在这种情况下,我认为您可以完全控制转换中涉及的视图。 但要消除这种阴影将会有很多工作要做。


回答

尝试使用此按钮使用导航控制器

let vc = TwoViewController(nibName: "TwoViewController", bundle: nil)
     navigationController?.pushViewController(vc, animated: true)

查看本教程NavigationController