目前我正在使用tableView从搜索功能中检索数据。所以现在我希望tableView根据我们获得的数据量来缩小。
所以这是结果很多的时候,它填满了tableView:
这就是我们只得到两个结果的时候。
所以我用了
tableView.tableFooterView = UIView(frame: CGRect.zero)
并设法隐藏了insets,但没有隐藏tableView的大小。是否可以根据加载数据的单元格数量实际缩小tableView的大小?
答案 0 :(得分:0)
不是不断更新表格视图的大小,而是将表格视图的背景设置为.clear
并将单元格的背景颜色设置为灰色可能更容易。如果您希望触摸传递到表视图透明的基础视图,您可以继承UITableView
并覆盖point(inside:,with:)
,如:
class TransparentTableView: UITableView {
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
return self.indexPathForRow(at: point) != nil
}
}
如果单元格位于该位置,则会导致触摸事件注册为位于表格视图内,从而有效地将表格视图的大小更改为单元格所占据的位置。
然后在您的storyboard或xib中将UITableView
的类更改为您的子类(在我的示例中为TransparentTableView
)。
point(inside:,with:)
确定触摸事件是否应被视为“内部”,因此由视图处理。默认情况下将映射到视图的边界。但是,对于我们来说,我们不希望处理表视图中的所有触摸事件仅限于存在单元格的位置。要检查某个单元格是否位于特定位置,我们可以调用indexPathForRow(at:)
如果它返回索引路径,我们知道如果它返回nil
则会有一个单元格,我们知道没有单元格。因此,只要self.indexPathForRow(at: point) != nil