在 iOS11 中更改 UISearchBar 背景图片

Change UISearchBar background image in iOS11

我想更改我的 UISearchBar 背景图片。 在我的 UITableView 中将它添加为 header 视图时,它工作得很好。但是,当我想更改它以将 SearchBar 设置为 navigationItem 的 searchController 时,它不会更改背景图像。

我正在使用:

self.searchBar.searchBar.setBackgroundImage(UIImage(named: "#IMAGENAME")?.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch), for: .any, barMetrics: UIBarMetrics.default)

有人知道如何解决这个问题吗?

使用下面的代码我用过类似的代码:

// Objective-c代码

[self.searchDisplayController.searchBar setBackgroundImage:[self imageWithColor:[UIColor yourColor]] 
                                         forBarPosition:0 
                                             barMetrics:UIBarMetricsDefault];

// Swift代码

self.searchDisplayController.searchBar.setBackgroundImage(self.image(colo
r: UIColor.yourColor), for: UIBarPosition(rawValue: 0)!, barMetrics:.default)

请告诉我结果

您可能正在寻找这个:

if #available(iOS 11.0, *) {
    let sc = UISearchController(searchResultsController: nil)
    if let navigationbar = self.navigationController?.navigationBar {
        navigationbar.barTintColor = UIColor(patternImage: UIImage(named: "pattern")!)
    }
    navigationItem.searchController = sc
    navigationItem.hidesSearchBarWhenScrolling = false
}

这是图片:

结果如下:

如果您想更改搜索栏的任何其他 UI 元素,这里有更详细的答案。