【发布时间】:2018-08-19 14:14:36
【问题描述】:
我有一个搜索控制器附加到具有自定义搜索栏样式(颜色)的导航项。代码如下:
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
}
当我在动画期间导航到该控制器一小段时间时,搜索栏显示白色而不是我设置的颜色。不确定这些是默认样式还是只是一种白色背景颜色。这是视频:
在调试视图层次结构的过程中,我发现了一个白色背景,不确定它是否与问题有关:
更新: Apple 官方搜索示例代码(可以找到here)也有类似问题。此外,它在搜索栏下方显示黑色区域,同时为新控制器的推送设置动画。我已将窗口的背景颜色更改为红色并改为看到红色:
就我而言,我没有白色背景的窗口或视图。了解是否有人遇到此问题以及如何解决它会很有趣。
【问题讨论】:
-
嗨,你解决了吗?
标签: ios uinavigationcontroller uisearchbar