我有一个搜索控制器附加在带有自定义搜索栏样式(颜色)的导航项上。以下是代码:
searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
let bar = searchController.searchBar
bar.placeholder = "Search songs"
bar.backgroundImage = .transparentPixel // transparent UIImage of size 1x1
bar.backgroundColor = UIColor(red: 0.02, green: 0.04, blue: 0.06, alpha: 1)
bar.tintColor = .white
bar.barTintColor = UIColor(red: 0.02, green: 0.04, blue: 0.06, alpha: 1)
bar.isTranslucent = false
bar.barStyle = .default
bar.showsCancelButton = true
definesPresentationContext = true
然后我将其添加到控制器中:
if #available(iOS 11.0, *) {
controller.navigationItem.searchController = searchController
controller.navigationItem.hidesSearchBarWhenScrolling = false
} else {
// Fallback on earlier versions
tableView.tableHeaderView = searchController.searchBar
}
当我导航到控制器时,在动画期间的短暂时间内,搜索栏显示白色而非我设定的颜色。不确定那是否是默认样式还是仅一个白色背景色。以下是视频:
![enter image description here](https://istack.dev59.com/xLZdZ.gif)
![enter image description here](https://istack.dev59.com/pDBzj.webp)
![enter image description here](https://istack.dev59.com/LbDJi.webp)
![enter image description here](https://istack.dev59.com/RnQbK.gif)