objective-c - UISearchController 背景与 iOS 11 中的 UINavigationBar 背景不匹配
问题描述
我正在更新一个较旧的应用程序以支持 iPhone X,并且在更新可搜索的 UITableViewController 时,将 UISearchController 的背景放在导航栏中时不会改变。
我正在使用以下代码将其放置在导航栏中:
self.navigationItem.searchController = self.searchController;
self.navigationItem.hidesSearchBarWhenScrolling = NO;
_UINavigationControllerManagedSearchPalette 中包含的 _UIBarBackground 保持白色。
创建 UINavigationController 时我错过了什么吗?
解决方案
尝试应用与导航栏色调相同的背景颜色。
searchBar.tintColor = UIColor.white
searchBar.backgroundColor = UIColor.red
searchBar.clearBackgroundColor()
通过这种方式删除 searchBar 的颜色:
extension UISearchBar {
func clearBackgroundColor() {
guard let UISearchBarBackground: AnyClass = NSClassFromString("UISearchBarBackground") else { return }
for view in self.subviews {
for subview in view.subviews {
if subview.isKind(of: UISearchBarBackground) {
subview.alpha = 0
}
}
}
}
}
使用上面的代码,我能够实现这个输出
希望这有帮助。
推荐阅读
- mysql - 在 SQL 中,有没有办法通过比较两个表之间的字段来执行 UNION?
- powerbi - 自定义日期表向下钻取问题 Power BI
- django - Django 计划任务
- c# - VB.NET 的@@
Razor 页面中的标签问题 - java - 如何在Java的S3存储桶中删除带有`term/classID/`前缀的文件,名称以`syllabus-`开头
- javascript - 使用 highcharts-export-server 注入变量饼图的问题
- java - 存储应用程序将在重新启动后记住的输入数据的最佳选择
- angular - 如何将 httpClient 注入实例化服务?
- android - Android FirebaseUI:即使只选择了一个提供者也显示一个按钮
- go - 使用字符串和数字对数组进行排序