2015-01-29 29 views
6
tableView.setContentOffset(CGPointMake(0, tableView.contentSize.height - tableView.frame.size.height), animated: true) 

To działa, ale zastanawiam się, co tak naprawdę są te dwie wartości: tableView.contentSize, tableView.frame.sizeJaka jest różnica między „tableView.contentSize” i „tableView.frame.size”

+0

Jest to związane z częścią 'UIScrollView', o tym, co jest faktycznie wyświetlane i jaki jest cały rozmiar w rzeczywistości (licząc" ukrytą "zawartość, nie pokazaną, chyba że przewijasz) – Larme

+2

jeśli chcesz zagłębić się, spójrz na [ to] (http://www.objc.io/issue-3/scroll-view.html) – Ethaan

Odpowiedz

12

contentSize jest wielkość zawartości UIScrollView, co oznacza, że ​​będzie to rozmiar zawartości (ukryty i widoczny), natomiast frame.size jest rzeczywistym rozmiarem twojego tableView.

Na przykład, powiedzmy, że mam ekran urządzenia o wysokości 568 (wysokość), a wewnątrz niego mam UITableView (zabierając cały ekran) z 100 komórkami i wysokością 50 dla każdego z nich. Moja tableView.frame.size.height będzie równy 568, ale tableView.contentSize.height będzie równa wielkości zwoju za wszystkich komórkach, więc 5000.

Ponadto, zgodnie z sugestią @Ethaan, przeczytaj this głębiej.