首页 > 解决方案 > UISearchController 背景与 iOS 11 中的 UINavigationBar 背景不匹配

问题描述

我正在更新一个较旧的应用程序以支持 iPhone X,并且在更新可搜索的 UITableViewController 时,将 UISearchController 的背景放在导航栏中时不会改变。

我正在使用以下代码将其放置在导航栏中:

self.navigationItem.searchController = self.searchController;
self.navigationItem.hidesSearchBarWhenScrolling = NO;

搜索栏

检查接口显示以下层次结构: 等级制度

_UINavigationControllerManagedSearchPalette 中包含的 _UIBarBackground 保持白色。

创建 UINavigationController 时我错过了什么吗?

标签: objective-cios11

解决方案


尝试应用与导航栏色调相同的背景颜色。

searchBar.tintColor = UIColor.white
searchBar.backgroundColor = UIColor.red
searchBar.clearBackgroundColor()

通过这种方式删除 searchBar 的颜色:

extension UISearchBar {

    func clearBackgroundColor() {
        guard let UISearchBarBackground: AnyClass = NSClassFromString("UISearchBarBackground") else { return }

        for view in self.subviews {
            for subview in view.subviews {
                if subview.isKind(of: UISearchBarBackground) {
                    subview.alpha = 0
                }
            }
        }
    }
}

使用上面的代码,我能够实现这个输出

在此处输入图像描述

希望这有帮助。


推荐阅读