添加 UISearchBar 后 UITableView 底部清空 space
Empty space at the bottom of UITableView after adding UISearchBar
我正在制作一个显示过去事件记录的 UITableView。一切看起来都很棒,直到我在顶部添加了一个搜索栏。当它滚动到顶部时,一切看起来都是我想要的:
但是,当我滚动到底部时,现在有一堆白色 space。很难在这个屏幕截图中分辨出来,因为没有屏幕边框,但 tableview 滚动将停留在这个屏幕上,大约一半的页面空白:
有趣的是,当我完全激活搜索栏(即单击它然后按取消)时,白色 space 消失,直到再次出现此视图。
我尝试了 tableView 的各种设置以及在视图布局过程的各个阶段使用 reloadData() 都无济于事。我知道行数是正确的。我发现让白色 space 消失的唯一方法是禁用搜索栏。但是我想要搜索栏!
这是搜索栏的代码:
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
})()
您似乎在观察 UIKeyboardWillShowNotification
& UIKeyboardWillHideNotification
并更改 tableView 的 contentInset
(将 keyBoard 大小高度添加到 contentInsets)而不是将 contentInsets 设置为 UIEdgeInsetsZero
当键盘隐藏时。
同样的事情发生在我身上。在 viewDidLoad 中声明 tableview 行高(即 self.tableView.rowHeight = 350)修复了它。
我通过这种方式(在 viewDidLoad 中)解决了额外的底部 space:
tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = 200 // should be more than real row height will be
我正在制作一个显示过去事件记录的 UITableView。一切看起来都很棒,直到我在顶部添加了一个搜索栏。当它滚动到顶部时,一切看起来都是我想要的:
但是,当我滚动到底部时,现在有一堆白色 space。很难在这个屏幕截图中分辨出来,因为没有屏幕边框,但 tableview 滚动将停留在这个屏幕上,大约一半的页面空白:
有趣的是,当我完全激活搜索栏(即单击它然后按取消)时,白色 space 消失,直到再次出现此视图。
我尝试了 tableView 的各种设置以及在视图布局过程的各个阶段使用 reloadData() 都无济于事。我知道行数是正确的。我发现让白色 space 消失的唯一方法是禁用搜索栏。但是我想要搜索栏!
这是搜索栏的代码:
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
})()
您似乎在观察 UIKeyboardWillShowNotification
& UIKeyboardWillHideNotification
并更改 tableView 的 contentInset
(将 keyBoard 大小高度添加到 contentInsets)而不是将 contentInsets 设置为 UIEdgeInsetsZero
当键盘隐藏时。
同样的事情发生在我身上。在 viewDidLoad 中声明 tableview 行高(即 self.tableView.rowHeight = 350)修复了它。
我通过这种方式(在 viewDidLoad 中)解决了额外的底部 space:
tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = 200 // should be more than real row height will be