在iOS11中更改UISearchBar背景图像

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

我在用着:

self.searchBar.searchBar.setBackgroundImage(UIImage(named: "#IMAGENAME")?.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch), for: .any, barMetrics: UIBarMetrics.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元素。

  • UINavigationBar中的iOS 11 UISearchBar

使用下面的代码我使用了类似的One:

// 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) 

请让我知道结果