iOS
Swift

UITableViewのCellが底まで表示されたかどうか判定する

下記コードで実現しました。

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
            }
        } ?? []
    }
}