UITableView lays out cells from the top. If there aren't enough cells to fill the screen, there will be an empty area in the bottom part of the table view, between the last cell and the bottom of the table view (as you would expect).
Unfortunately, there isn't a standard way to invert a UITableView, and have cells laid out from the bottom.
So, the easiest solution for us was to set the table's transform to CGAffineTransformMake(1, 0, 0, -1, 0, 0) (flip the whole table upside down) and then give the cells the same transform (to cancel out the table view's transform).
A bit hacky, and causes indexPaths to be inverted as well (0,0 is now at the bottom), but worked for us.
Seen a few other people take this approach as well: https://twitter.com/tapbot_paul/status/461161920402563072