下記コードで実現しました。
extension UITableView {
// indexPathsForVisibleRowsの内、そのCellの底が表示されているもののみ返します。
func indexPathsForVisibleRowsOfDisplayedCellBottom() -> [IndexPath] {
return self.indexPathsForVisibleRows?.filter { indexPath in
let cellRect = self.rectForRow(at: indexPath)
let cellBottomFromTableViewTop = cellRect.maxY
let visibleTableViewBottomFromTableViewTop = self.contentOffset.y + self.frame.maxY
if cellBottomFromTableViewTop <= visibleTableViewBottomFromTableViewTop {
return true
} else {
return false
}
} ?? []
}
}