У меня есть прокрутка UITableView
в UIScrollView
. Я установил размер кадра UITableView
в размере его содержимого.Когда устанавливается контент contentSize UITableView?
Когда я добавляю строку в UITableView
, я звоню insertRowsAtIndexPaths:withRowAnimation
: на UITableView
. Тогда я вызываю метод, чтобы изменить размер кадра UITableView
:
- (void)resizeTableViewFrameHeight
{
// Table view does not scroll, so its frame height should be equal to its contentSize height
CGRect frame = self.tableView.frame;
frame.size = self.tableView.contentSize;
self.tableView.frame = frame;
}
Похоже, однако, что contentSize
не была обновлена в данный момент. Если я вручную вычисляю фрейм в указанном выше методе на основе количества строк и разделов, то метод работает правильно.
Мой вопрос: как я могу получить UITableView
, чтобы обновить его contentSize
? Полагаю, я мог бы позвонить reloadData
, и это, вероятно, сделало бы это, но кажется неэффективным перезагрузить всю таблицу, когда я просто вставляю одну ячейку.
Я пробовал это, но это не сработало для меня. Но я смог придумать другое решение, которое я разместил здесь: http://stackoverflow.com/questions/17634617/when-does-uitableview-content-size-update-with-row-insert-delete-animation/18665064 # 18665064 – Daren
О, это только для исходного contentSize. Ваш пробег может отличаться для других случаев, когда размер изменяется после этого. – Farthen
Примечание для тех, для кого это не работает - tableView: оцененныйHeightForRowAtIndexPath messes with contentSize, так что вам может повезти, просто удалив его реализацию. – weienw