我正在将
期望结果:
这是我正在使用的代码:(在viewDidLoad中调用)
UISearchController
添加到UITableView
中,但在iOS 11上进行自定义时遇到了困难。我的导航栏使用渐变图像背景,我希望搜索控制器与之匹配,但我没有找到设置UISearchController
背景图像的方法。当它作为TableHeaderView的UISearchController时,它可以完美工作,但在iOS 11中几乎没有任何自定义传递。当前结果:![Current outcome](https://istack.dev59.com/H3NwL.webp)
![Desired outcome](https://istack.dev59.com/B41pP.webp)
private func setupSearchController() {
let searchController = UISearchController(searchResultsController: nil)
// Convert CAGradientLayer to UIImage
let gradient = Color.blue.gradient
gradient.frame = searchController.searchBar.bounds
UIGraphicsBeginImageContext(gradient.bounds.size)
gradient.render(in: UIGraphicsGetCurrentContext()!)
let gradientImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
// Setup the Search Controller
searchController.searchBar.backgroundImage = gradientImage
searchController.searchBar.isTranslucent = false
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search by transaction name"
searchController.searchBar.tintColor = Color.custom(hexString: "FAFAFA", alpha: 1).value
definesPresentationContext = true
searchController.searchBar.delegate = self
// Implement Search Controller
if #available(iOS 11.0, *) {
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
navigationController?.navigationBar.setBackgroundImage(gradientImage, for: .default)
} else {
tableView.tableHeaderView = searchController.searchBar
}
}
CAGradientLayer
的。 - nomadoda