添加 UISearchBar 后 UITableView 底部的空白处
Posted
技术标签:
【中文标题】添加 UISearchBar 后 UITableView 底部的空白处【英文标题】:Empty space at the bottom of UITableView after adding UISearchBar 【发布时间】:2015-08-15 19:03:49 【问题描述】:我正在制作一个显示过去事件记录的 UITableView。一切看起来都很棒,直到我在顶部添加了一个搜索栏。当它滚动到顶部时,一切看起来都是我想要的:
但是,当我滚动到底部时,现在有一堆空白。在这个截图中很难说清楚,因为没有屏幕边框,但 tableview 滚动将停留在这个屏幕上,大约一半的页面空白:
有趣的是,当我完全激活搜索栏(即单击它然后按取消)时,空白会消失,直到该视图再次出现。
我已经尝试了 tableView 的各种设置以及在视图布局过程的各个阶段使用 reloadData() 均无济于事。我知道行数是正确的。我发现让空白消失的唯一方法是禁用搜索栏。但我想要搜索栏!
这是搜索栏的代码:
self.resultSearchController = (
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
controller.searchBar.placeholder = "Search by keyword, name, etc."
controller.searchBar.barTintColor = UIColor(red: 224/256, green: 244/256, blue: 255/256, alpha: 1)
controller.searchBar.delegate = self
self.pastServicesTable.tableHeaderView = controller.searchBar
return controller
)()
【问题讨论】:
嗨,你为什么不尝试给tableview,表格单元格添加颜色以知道那个白色的spce到底是什么 我也遇到了同样的问题,你知道怎么解决吗? 【参考方案1】:同样的事情也发生在我身上。在 viewDidLoad 中说明 tableview 行高(即 self.tableView.rowHeight = 350)修复了它。
【讨论】:
非常感谢,效果很好!你知道为什么会这样吗?我的 rowHeights 因单元格而异,我在 ViewWillAppear 中设置了 tableView.rowHeight = UITableViewAutomaticDimension。同样使用您的解决方案,如果我将 tableView.rowHeight 设置为低于 100 左右,那么底部仍有空间(rowHeight 越接近 0,空间越大)但我不确定为什么......【参考方案2】:您似乎正在观察UIKeyboardWillShowNotification
和UIKeyboardWillHideNotification
并更改tableView 的contentInset
(将keyBoard 大小高度添加到contentInsets),而不是将contentInsets 设置为UIEdgeInsetsZero
当键盘隐藏时。
【讨论】:
嗨,不,我没有观察通知或更改 contentinset(至少不是在代码或属性检查器中,据我所知)。键盘出现的唯一时间是使用搜索栏时。此外,底部空白区域的高度似乎在屏幕高度的四分之一到四分之三之间不规律地变化。【参考方案3】:我以这种方式解决了额外的底部空间(在 viewDidLoad 中):
tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = 200 // should be more than real row height will be
【讨论】:
以上是关于添加 UISearchBar 后 UITableView 底部的空白处的主要内容,如果未能解决你的问题,请参考以下文章
禁用添加到 UITableView 的 UISearchbar 的滚动
如何在 UINavigationBar 上添加 UISearchBar 动画