在iOS11中如何更改UISearchBar的背景图像

3

我想要更改我的UISearchBar背景图片。

当我将它添加为UITableView的标题视图时,它可以完美地工作。但是,当我想要为设置为navigationItem搜索控制器的SearchBar更改它时,它不会更改背景图片。

我正在使用:

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

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

2

您可能在寻找以下内容:

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
}

这里有一张图片:

enter image description here

这是结果:

enter image description here

如果你想要改变搜索栏的其他UI元素,这里有更详细的答案:

1
非常感谢!我已经寻找这个答案很长时间了! - nomadoda
对于那些在导航栏中有搜索栏的人,请尝试替换:navigationItem.searchController = sc navigationItem.titleView = sc.searchBar - Yash Bedi

-1

使用以下代码,我已经使用了类似的代码:

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

请告诉我结果。

Op要求在UINavigationItem中使用UISearchController,而不是已弃用的UISearchDisplayController。 - Ortwin Gentz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接