tableView代理方法執行順序,隨着iOS系統版本的不斷升級,執行順序也有所變化
1.iOS7.1中先依次調一遍heightForRow方法再依次調一遍cellForRow方法,在調cellForRow方法的時候並不會再調一次對應的heightForRow方法。
2.iOS8中先依次調heightForRow(如果行數超過屏幕依次調用兩次,如果行數很少,沒有超過屏幕,只依次調用一次),之后每調一次cellForRow的時候又調一次對應的heightForRow方法。
3.iOS9和iOS10中,heightForRow方法會先調用三次,然后每調用一次cellForRow的時候再調用一次對應的heightForRow。
4.因為iOS11中tableView的estimatedRowHeight默認值由原來的0變為UITableViewAutomaticDimension(打印出來為-1),所以每一次先調用cellForRow又調一次對應的heightForRow方法。
如果把estimatedRowHeight設為0,則還是會先遍歷一次每個cell的tableView:heightForRowAtIndexPath:獲取總的高度值 然后每調用一次cellForRow的時候再調用一次對應的heightForRow。
