在 iOS11 中更改 UISearchBar 背景图片
Posted
技术标签:
【中文标题】在 iOS11 中更改 UISearchBar 背景图片【英文标题】:Change UISearchBar background image in iOS11 【发布时间】:2018-01-11 09:07:18 【问题描述】:我想更改我的 UISearchBar 背景图像。 在我的 UITableView 中将其添加为标题视图时,它工作得非常好。但是,当我想将 SearchBar 设置为 navigationItem 的 searchController 时,它不会更改背景图像。
我正在使用:
self.searchBar.searchBar.setBackgroundImage(UIImage(named: "#IMAGENAME")?.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch), for: .any, barMetrics: UIBarMetrics.default)
有人知道如何解决这个问题吗?
【问题讨论】:
【参考方案1】:您可能正在寻找这个:
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 元素,这里有更详细的答案。
iOS 11 UISearchBar in UINavigationBar【讨论】:
非常感谢!这个答案我找了很久! 对于那些在导航栏中有搜索栏的人,请尝试替换:navigationItem.searchController = sc
with -> navigationItem.titleView = sc.searchBar
.【参考方案2】:
使用下面的代码我用过类似的代码:
// Objective-c 代码
[self.searchDisplayController.searchBar setBackgroundImage:[self imageWithColor:[UIColor yourColor]]
forBarPosition:0
barMetrics:UIBarMetricsDefault];
// 斯威夫特代码
self.searchDisplayController.searchBar.setBackgroundImage(self.image(colo
r: UIColor.yourColor), for: UIBarPosition(rawValue: 0)!, barMetrics:.default)
请告诉我结果
【讨论】:
Op 要求 UINavigationItem 中的 UISearchController,而不是弃用的 UISearchDisplayController。以上是关于在 iOS11 中更改 UISearchBar 背景图片的主要内容,如果未能解决你的问题,请参考以下文章
如何在iOS 7中更改文本UISearchBar的取消按钮颜色?
在 iOS 8 中更改 UISearchBar 取消按钮文本
如何在iOS7中更改UISearchBar的取消按钮的textColor?