I am using the estimatedRowHeight method from UITableView in iOS 7, which works perfectly for fast loading of a UITableView with 5000 rows of variable heights.
estimatedRowHeight
This solved my problem
let oldContentSize = tableView.contentSize tableView.scrollToRow(at: indexPath, at: .top, animated: true) // Called again when tableView contentSize change if !tableView.contentSize.equalTo(oldContentSize) { tableView.scrollToRow(at: indexPath, at: .top, animated: true) }