2016-05-05 3 views
3

Я пытаюсь создать таблеточный просмотр, где каждая строка может отображать подсписку, когда она используется. Для того, чтобы я обновить DataModel и позвонитьUITableView с самостоятельной калибровкой insertRowsAtIndexPaths изменяет contentOffset

[self.tableView insertRowsAtIndexPaths:addedIndexPaths withRowAnimation:(UITableViewRowAnimationTop)]; 

анимация происходит в то время как строки видны. Добавленные ячейки отображаются правильно после анимации, но в то время как анимация tableview иногда прокручивается вверх. Это происходит особенно в последнем разделе таблицы. Также tableview всегда прокручивается, когда таблица отображается до тех пор, пока не будет видна верхняя часть ячейки, которая находится над вставленными ячейками.

Я хочу исправить контент-контент во время видимой анимации. Я попытался установить смещение контекста внутри begin updates и end updates, но это не сработало, потому что анимация будет прокручиваться вверх, и вы увидите, что содержимое прокручивается назад.

Я использую автомасштабирование, чтобы сделать ячейки саморазмерными.

Как сохранить смещение содержимого константы tableview при вставке видимых ячеек?

+0

Вы задаете вид таблицы, чтобы перейти к верхней части добавленной ячейки при указании UITableViewRowAnimationTop. Если вы не хотите, чтобы это произошло, вам нужно выбрать новую анимацию строк. Вероятно, вы хотите UITableViewRowAnimationNone. Все ваши параметры описаны здесь https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/#//apple_ref/c/tdef/UITableViewRowAnimation. – Dare

+0

Я не уверен, но: Возможно, вы используете autoLayout, но вы не отправляете сообщения autoLayout, чтобы настроить себя после каждой анимации. Если это то, что вы делаете неправильно, посмотрите это видео. Надеюсь, поможет. https://www.youtube.com/watch?v=N5Ert6LTruY – Honey

+1

@ asma22 Я использую автомасштабирование для размеров своих ячеек. я попробовал и назвал self.tableview layoutIfNeeded внутри блока начальных/конечных обновлений, но это не решило проблему. Как бы вы узнали автоматическую компоновку? – HasenBaumeister

ответ

0

Я понял вопрос. Саморегуляция является основной причиной.

Не используйте самостоятельно изменение размера Просто удалите эти строки:

tableView.estimatedRowHeight = 123

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {

+0

Сохраняют ли ваши ячейки авто-размер после внесения изменений? – Macondo2Seattle

+0

@ Macondo2Seattle: Я вычислил высоту ячеек 'systemLayoutSizeFittingSize'. – anhtu

Смежные вопросы