Сгруппируйте TableView, используя заголовок раздела самоконтроля, после перезагрузки, если я прокручиваю вверх, будет перескочен просмотр таблицы
Я делаю вид таблицы так: твиттер и комментарии к нему; введите описание изображения здесь
Я пробовал несколько архитектур. Я не нахожу достаточно вопросов и дискуссий по этому поводу. Я думаю, что это очень значимый вопрос, поэтому я публикую информацию о производительности и ограничениях этих архитектур.
Во-первых, используя целую ячейку как твиттер с комментариями, представление комментариев будет генерироваться в соответствии с моделью. Ячейка использует автоматическую настройку высоты макета.
Эта архитектура может работать. Но если у твиттера есть много комментариев (30 или более), в старом iPhone(4s,5,5s и т. Д.) Fps снизится до 40. Очевидный блок для плавной прокрутки. Это узкое место производительности является Единственная слабость для этой архитектуры.
Во-вторых, из-за узкого места в производительности, я думаю, что, возможно, я мог бы поместить табличное представление комментариев в ячейку Twitter. И ячейка Twitter, и встроенная ячейка комментариев тоже используют автоматическую настройку высоты макета. Но после попытки я обнаружил, что ячейка Twitter не может подтвердите его высоту, потому что встроенный просмотр таблицы комментариев сам по себе не может подтвердить его высоту. Поэтому мне нужно вычислить высоту встроенного просмотра таблицы комментариев, чтобы подтвердить высоту ячейки Twitter. Эта архитектура тоже работает хорошо. Но ее узкое место по производительности совпадает с первой архитектурой.
В-третьих, также самое важное - использовать заголовок раздела в качестве твиттера, а ячейку в качестве комментария. То есть раздел - это целый твиттер с комментариями. В заголовке раздела и ячейке используется высота авторазметки для автоматического определения размера.
Производительность этой архитектуры лучшая, даже в твиттере с более чем 50 комментариями, прокрутка таблиц очень плавная даже в iPhone5,fps - не менее 55. Но есть странные проблемы, которые я не могу решить.
Я прокручиваю до конца, таблица перезагружается на следующей странице. После reloadData первая небольшая проблема заключается в том, что заголовок раздела отклоняется, но появляется после прокрутки (Позже я обнаружил, что если я установил заголовок таблицы, эта проблема появится, если я удалю заголовок таблицы, это проблема исчезла, так запутался). Вторая и более важная проблема заключается в том, что если я прокручиваю вверх, табличное представление будет "подпрыгивать". Ниже приведена демонстрация gif (я не знаю, как отправить большой gif в Stackru, извините) https://github.com/yutanchi/GroupTableViewSectionHeaderJump/blob/master/tableviewjump.gif
Я думаю, что причина в том, что просмотр таблицы использует предполагаемую высоту заголовка раздела, но не фактическую высоту заголовка раздела. Я искал много информации, но ничто не может мне помочь. Я настолько запутался, что если механизм самоопределения размера заголовка раздела такой же, как механизм самоопределения размера ячейки. Почему ячейка с самоопределением размера может выполнять правильное поведение? не. Поскольку эта архитектура имеет очевидное преимущество в производительности, я хочу выяснить, что не так с заголовком раздела для самостоятельного определения размера, решить эти досадные проблемы и использовать архитектуру. Может кто-нибудь объяснить или обсудить это?
1 ответ
Для этого вы должны дать все ограничения слева направо сверху вниз всем элементам. Также 1-в viewDidLoad установить следующее
self.yourtableView.estimatedRowHeight= your estimated_height_for_Cell
yourtableView.rowHeight = UITableViewAutomaticDimension
2- установить число строк равным нулю для меток в инспекторе атрибутов.