之前看了 Ray Wenderlich 的一篇文章 学习了一下怎么把 UISearchBar 放在 UITableView 的头部,来进行列表搜索,然后发现了两个问题,用了好久才解决:
- UISearchBar 有个 1 像素宽的黑色边框,去不掉
- 把 UISearchBar 放在 UITableView 头部的代码在 iOS 8 不起作用
tableView.tableHeaderView = searchController.searchBar // now working
解决问题 1
searchController.searchBar.layer.borderWidth = 1
searchController.searchBar.layer.borderColor = // your background color
解决问题 2
我发现 tableHeaderView 是可以被其他 view 有效填充的,不知道为什么 searchBar 就是放不进去,所以直接找个大小一样的 UIView 作为容器放在 searchBar 下面就好了。
let containerView = UIView(frame: CGRectMake(0, 64, view.frame.width, 44))
containerView.backgroundColor = // your background color
searchController.searchBar.frame = CGRectMake(0, 0, view.frame.width, 44)
containerView.addSubview(searchController.searchBar)
tableView.tableHeaderView = containerView