Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 导航栏中的灰色背景,在推送过程中将searchController添加到navigationItem_Ios_Uinavigationcontroller_Uinavigationbar_Uisearchcontroller_Pushviewcontroller - Fatal编程技术网

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