Ios 导航栏中的灰色背景,在推送过程中将searchController添加到navigationItem
我在导航控制器中有一个表视图,这样我就可以在堆栈上推送细节视图控制器。它工作正常,直到我向导航项添加搜索控制器,如下所示:Ios 导航栏中的灰色背景,在推送过程中将searchController添加到navigationItem,ios,uinavigationcontroller,uinavigationbar,uisearchcontroller,pushviewcontroller,Ios,Uinavigationcontroller,Uinavigationbar,Uisearchcontroller,Pushviewcontroller,我在导航控制器中有一个表视图,这样我就可以在堆栈上推送细节视图控制器。它工作正常,直到我向导航项添加搜索控制器,如下所示: searchController = UISearchController(searchResultsController: nil) searchController.obscuresBackgroundDuringPresentation = false searchController.hidesNavigationBarDuringPresentation = fa
searchController = UISearchController(searchResultsController: nil)
searchController.obscuresBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false
searchController.searchBar.delegate = self
searchController.searchBar.tintColor = Colors.mlLabel
navigationItem.searchController = searchController
definesPresentationContext = true
它会产生暂时的灰色背景,如下所示:
调试视图层次结构时,由于导航栏和状态栏都是透明的,因此看起来像是uiviewcontrollerrapperview的_-parallaxdimmingview
(如下所选)导致了这种情况
我怎样才能解决这个问题
注意:将pushViewController()
中的animated
属性设置为false
有效,但我想保留动画
更新:这似乎只是iOS 13上的问题。可能是最近的版本,因为我之前没有这个问题
更新2:我现在在我的应用程序的多个地方注意到了相同的问题,而且不仅仅是与SearchController
结合使用。基本上,\uParallaxDimmingView
突出了它的鼻子 更新
下面是我用来从大标题转换为小标题的代码。以下是大标题viewcontroller或更具体的导航控制器的属性:
navigationController.navigationBar.prefersLargeTitles = true
navigationController.topViewController?.extendedLayoutIncludesOpaqueBars = true
也许上面的第二行可以帮助你
至于推送任何视图控制器,我看到我已经覆盖了导航控制器的推送功能(因为我对选项卡栏中的每个选项卡都使用导航控制器):
先前的答复
在我的生活中,我见过几次这样的场景,它总是与视图控制器本身的背景色有关。如果它是透明的,你可以在制作动画时看到这些东西
但由于它是一个搜索控制器,它可能是导航栏。无论如何,由于该问题仅发生在iOS13之后,我相信可以通过以下方式解决该问题:
searchController.searchBar.backgroundColor = UIColor.clear (or whatever color)
这个新属性(UISearchBar.searchTextField.backgroundColor)是从iOS13开始添加的,所以这可能会为您解决这个问题?:) 我终于找到了解决办法。问题之一是我为导航栏设置了背景色,如下所示:
UINavigationBar.appearance().backgroundColor = .white
因此,删除上面的行并将下面的行添加到正在按下的视图控制器,修复了它
extendedLayoutIncludesOpaqueBars = true
你能分享一下你是如何实现搜索控制的吗?请检查更新的问题,没什么特别的。只需
UISearchController(searchresultcontroller:nil)
您将搜索控制器添加到哪里?它是在viewdilaod方法中还是其他地方?@m1sh0是,viewdiload()
您需要使用透明导航栏吗?您可以配置为不透明?我已经尝试了您的建议,但没有效果。我总是设置视图控制器的背景色。事实证明,我错误地认为它直接连接到SearchController。看起来,当当前VC有大标题,而被推到堆栈上的那个没有时,就会发生这种情况。啊,好吧,那么最后你自己解决了吗?:)我建议你发布你自己的答案,并在将来遇到同样问题的开发者中接受它。我没有:/我目前的设置是我所需要的,例如,将标题从大变小不是我想妥协的事情。我几乎可以肯定,我在最近的一些XCode版本更新中已经开始出现这个问题,肯定不是在一开始(比如第一个XCode 11 beta…)我已经用即将结束的悬赏奖励了你的答案,这样声誉就不会被浪费:)享受吧!啊,太好了!第二行也在我更新答案的代码中;)很高兴听到你终于可以继续:)
extendedLayoutIncludesOpaqueBars = true