使用UISearchController在UISearchBar上方添加空白

Alb*_*ori 5 uisearchbar ios uisearchcontroller

我在iOS中使用UISearchBar遇到奇怪的行为。我的搜索栏工作正常:

好的UISearchBar

但是,当我UINavigationBar.appearance().translucent = false在ApplicationDelegate中didFinishLaunchingWithOptions进行设置以使颜色正确显示在iOS应用程序的导航栏中时,搜索栏上方会出现一个白色部分,如下所示:

UISearchBar损坏

滚动结果表视图时,基础内容在该间隙中可见:

损坏的UISearchBar半透明

我要修复的最接近的是setting mySearchResultsViewController.edgesForExtendedLayout = UIRectEdge.None,它停止了半透明的间隙,但仍然没有正确的颜色:

损坏的UISearchBar edgeForExtendedLayout无

有什么办法可以防止它显示出变色的间隙并仍然具有全局不透明的导航栏?

Alb*_*ori 5

经过大量的搜寻之后,我发现搜索结果中隐藏了以下答案:UISearchController无法与非半透明的UINavigationBar一起正常工作

具体来说,当我将其放入呈现视图控制器时,此代码段有效:

func viewDidLoad() {
    extendedLayoutIncludesOpaqueBars = true
}
Run Code Online (Sandbox Code Playgroud)

如此简单,却难以猜测。