添加UISearchBar后,UITableView底部的空白区域

时间:2015-08-15 19:03:50

标签: ios uitableview uisearchbar

我正在创建一个显示过去事件记录的UITableView。在我在顶部添加搜索栏之前,这一切看起来都很棒。当它滚动到顶部时,它看起来就像我想要的那样:

enter image description here

但是,当我滚动到底部时,现在有一堆空白区域。在这个截图中很难说是没有屏幕边框,但是桌面滚动将停留在这个屏幕上,大约一半的页面空白:

enter image description here

有趣的是,当我完全激活搜索栏(即点击其中然后按取消)时,空白区会消失,直到此视图再次出现。

我已经尝试过各种各样的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
    })()

3 个答案:

答案 0 :(得分:1)

同样的事发生在我身上。在viewDidLoad中说明tableview行高(即self.tableView.rowHeight = 350)修复了它。

答案 1 :(得分:0)

您似乎正在观察UIKeyboardWillShowNotification& UIKeyboardWillHideNotification并更改tableView的contentInset(将keyBoard大小高度添加到contentInsets),并在键盘隐藏时不将contentInsets设置为UIEdgeInsetsZero

答案 2 :(得分:0)

我以这种方式解决了额外的底部空间(在 viewDidLoad 中):

tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = 200 // should be more than real row height will be