问题描述
限时送ChatGPT账号..我正在为我的 UITableView
实现一个 UISearchController
,但我正在为 iOS 11 的自定义而苦苦挣扎.我的导航栏正在使用我想要的渐变图像背景要匹配的搜索控制器,但我还没有找到为 UISearchController
设置背景图像的方法.它在 UISearchController 上作为 TableHeaderView 完美运行,但在 iOS 11 中几乎没有任何自定义传递.
I'm implementing an UISearchController
to my UITableView
but I'm struggling with the customization for iOS 11. My navigation bar is using a gradient image background that I want the search controller to match, but I haven't found a way to set the background image for UISearchController
. It works perfectly on UISearchController as a TableHeaderView, but in iOS 11 barely any customization is passed on.
目前的结果:
预期结果:
这是我使用的代码: (在 viewDidLoad 上调用)
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
}
}
推荐答案
感谢 Krunal 的回答我能够找到搜索了一段时间后,一个不错的解决方案.
Thanks to Krunal's answer I was able to find a decent solution after searching for quite some time.
这就是我为 iOS 11 实现背景图像的方式:
This is how I came about implementing the background-image for iOS 11:
// Implement Search Controller
if #available(iOS 11.0, *) {
if let navigationBar = self.navigationController?.navigationBar {
navigationBar.barTintColor = UIColor(patternImage: gradientImage!)
}
if let textField = searchController.searchBar.value(forKey: "searchField") as? UITextField {
if let backgroundview = textField.subviews.first {
backgroundview.backgroundColor = UIColor.white
backgroundview.layer.cornerRadius = 10;
backgroundview.clipsToBounds = true;
}
}
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
} else {
tableView.tableHeaderView = searchController.searchBar
}
这篇关于在 UISearchController iOS 11 上使用背景图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
更多推荐
[db:关键词]
发布评论