在我的UITableView中,我需要将UIView放在桌子的页脚和屏幕外面。例如,“推送刷新”功能(如Twitter应用程序)是在桌子的乞讨和屏幕外,我需要相同但在底部。
如果我有足够的行,总高度大于屏幕高度,我没有任何问题,但如果我没有任何行,我就无法定位muy视图。
所以我需要在我的桌子上添加一个空白单元格(自定义单元格)来填充最后一个单元格和屏幕底部之间的空白区域,我该怎么办呢?我怎么知道空地的高度?
非常感谢你的帮助。
答案 0 :(得分:8)
为什么不使用相同的表格页脚视图而只是使其足够大以包含该空白空间,而不是空白单元格。这似乎更容易。
现在,我能想到的唯一解决方案是手动计算内容的高度。为此,我认为你可以使用一个技巧,只需调用
CGRect lastRowFrame = [tableView rectForRowAtIndexPath: last_row_index_path];
正如文档所说,这将为您提供最后一行的框架,您可以使用它计算frame.size.height
与最后一行之间的差异。像这样:
CGFloat emptySpaceHeight = tableView.frame.size.height - (lastRowFrame.origin.y + lastRowFrame.size.height);
这将是您需要添加到页脚视图的空白区域。
哦,最后一招可以达到这个效果:确保使用tableView.contentInset
将底部插图设置为减去“Push to refresh”消息高度。这会使桌面视图反弹并在屏幕外显示消息。
现在我想不出更好的方法来实现你想要的。所以,希望这会有所帮助。
答案 1 :(得分:0)
Swift版
lastRowFrame = tableView.rectForRow(at: indexPath)
let emptySpaceHeight = tableView.frame.size.height - (lastRowFrame.origin.y + lastRowFrame.size.height)
答案 2 :(得分:0)
您可以尝试将此添加到heightforrowat函数中,这样可以让底部单元格具有最后一个单元格和屏幕底部之间缺失空间的大小。
if indexPath == (lastIndexPath) {
var currentCellsHeight: CGFloat = 0
let minimumFooterCellHeight = 50 // Whatever you want the minimum to be
for visibleCell in tableView.visibleCells {
currentCellsHeight += visibleCell.frame.height
}
if let footerCell = tableView.cellForRow(at: indexPath) {
currentCellsHeight -= footerCell.frame.height
}
if self.view.frame.height - currentCellsHeight < minimumFooterCellHeight {
return minimumFooterCellHeight
} else {
return self.view.frame.height - currentCellsHeight
}
}